1、建立TCP客户端的Socket服务,使用的是Socket对象,建议该对象一创建就明确目的地,即要连接的主机;
2、如果连接建立成功,说明数据传输通道已建立,该通道就是Socket流,是底层建立好的,既然是流,说着这里既有输入流,又有输出流,想要输入流或者输出流对象,可以通过Socket来获取,可以通过getOutputStream()和getInputStream()来获取;
3、使用输出流,将数据写出;
4、关闭Socket服务。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
// 1、创建客户端的Socket服务
Socket socket = new Socket( "192.168.1.100" , 10002 );
// 2、获取Socket流中输入流
OutputStream out = socket.getOutputStream();
// 3、使用输出流将指定的数据写出去
out.write( "TCP is coming !" .getBytes());
// 4、关闭Socket服务
socket.close();
}
}
|
1、建立TCP服务端的的Socket服务,通过ServerSocket对象;
3、获取连接过来的客户端对象;
4、通过客户端对象来获取Socket流,读取客户端发来的数据;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
// 1、创建客户端对象
ServerSocket ss = new ServerSocket( 10002 );
// 2、获取连接过来的客户端对象
Socket s = ss.accept();
String ip = s.getInetAddress().getHostAddress();
// 3、通过Socket对象获取输入流,读取客户端发来的数据
InputStream in = s.getInputStream();
byte [] buf = new byte [ 1024 ];
int len = in.read(buf);
String text = new String(buf, 0 , len);
System.out.println(ip + ":" + text);
// 4、关闭资源
s.close();
ss.close();
}
}
|
在本部分,我们对前两部分的内容进行优化,实现TCP传输模式下的客户端和服务端的交互功能。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
/**
*优化TCP传输的客户端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class ClientUpdate {
public static void main(String[] args) throws IOException {
Socket socket = new Socket( "192.168.1.100" , 10002 );
OutputStream out = socket.getOutputStream();
out.write( "tcp!" .getBytes());
// 读取服务端返回的数据,使用Socket读取流
InputStream in = socket.getInputStream();
byte [] buf = new byte [ 1024 ];
int len = in.read(buf);
String text = new String(buf, 0 , len);
System.out.println(text);
socket.close();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/**
*优化TCP传输的服务端
*/
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerUpdate {
public static void main(String[] args) throws IOException {
// 1、创建服务端对象
ServerSocket ss = new ServerSocket( 10002 );
// 2、获取连接过来的客户端对象
Socket s = ss.accept(); //accept方式为阻塞式方法
String ip = s.getInetAddress().getHostAddress();
// 3、通过Socket对象获取输入流,要读取客户端发来的数据
InputStream in = s.getInputStream();
byte [] buf = new byte [ 1024 ];
int len = in.read(buf);
String text = new String(buf, 0 , len);
System.out.println(ip + ":" + text);
// 使用客户端的Socket对象的输出流给客户端返回数据
OutputStream out = s.getOutputStream();
out.write( "收到" .getBytes());
s.close();
ss.close();
}
}
|
四、创建英文大写转换服务器
应用TCP(Transmission Control Protocol,传输控制协议)的相关性质,创建一个基于TCP传输下的英文大写转换服务器,要求:客户端输入字母数据,发送给服务端;服务端收到数据后显示在控制台,并将该数据转成大写字母返回给客户端;直到客户端输入“over”为止,转换结束。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TransClient {
public static void main(String[] args) throws IOException {
/**
* 思路:创建客户端
* 1、创建Socket客户端对象
* 2、获取键盘录入的数据
* 3、将录入的信息发送给Socket输出流
* 4、读取服务端的数据并返回的大写数据
*/
// 1、创建Socket客户端对象
Socket s = new Socket( "192.168.1.100" , 10004 );
// 2、获取键盘录入
BufferedReader bufr = new BufferedReader( new InputStreamReader(System.in));
// 3、Socket输出流
PrintWriter out = new PrintWriter(s.getOutputStream(), true );
// 4、Socket输入流,读取服务端的数据并返回的大写数据
BufferedReader bufIn = new BufferedReader( new InputStreamReader(s.getInputStream()));
String line = null ;
while ((line = bufr.readLine()) != null ) {
if ( "over" .equals(line))
break ;
out.println(line);
// 读取服务端返回的一行大写数据
String upperStr = bufIn.readLine();
System.out.println(upperStr);
}
s.close();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TransServer {
public static void main(String[] args) throws IOException {
/**
* 思路:创建服务端
* 1、创建SeverSocket客户端对象
* 2、获取Socket流
* 3、通过Socket, 读取客户端发过来的需要转换的数据
* 4、显示在控制台上
* 5、将数据转换成大写返回给客户端
*/
// 1、创建SeverSocket对象
ServerSocket ss = new ServerSocket( 10004 );
// 2、获取Socket对象
Socket s = ss.accept();
// 获取IP地址
String ip = s.getInetAddress().getHostAddress();
System.out.println(ip + "......connected" );
// 3、获取Socket读取流,并装饰
BufferedReader bufIn = new BufferedReader( new InputStreamReader(s.getInputStream()));
// 4、获取Socket的输出流,并装饰
PrintWriter out = new PrintWriter(s.getOutputStream(), true );
String line = null ;
while ((line = bufIn.readLine()) != null ) {
System.out.println(line);
out.println(line.toUpperCase());
}
s.close();
ss.close();
}
}
|
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
原文链接:http://blog.csdn.net/qq_35246620/article/details/53573176
相关文章
- ASP.NET本地开发时常见的配置错误及解决方法? 2025-06-10
- ASP.NET自助建站系统的数据库备份与恢复操作指南 2025-06-10
- 个人网站服务器域名解析设置指南:从购买到绑定全流程 2025-06-10
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-06-04 48
-
Mybatis集成Spring的实例代码_动力节点Java 学院整理
2025-05-29 66 -
2025-06-04 105
-
2025-05-29 70
-
使用360免费建站时遇到问题如何解决以确保赚钱计划顺利进行?
2025-06-04 29