1 package day12.lesson3;
2
3 import java.io.IOException;
4 import java.io.OutputStream;
5 import java.net.InetAddress;
6 import java.net.Socket;
7
8 /*
9 3 TCP通信程序
10
11 3.1 TCP发送数据
12
13 Java中的TCP通信
14 Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。
15 Java为客户端提供了Socket类,为服务器端提供了ServerSocket类
16
17 构造方法
18 Socket(InetAddress address,int port) 创建流套接字并将其连接到指定IP指定端口号
19 Socket(String host, int port) 创建流套接字并将其连接到指定主机上的指定端口号
20
21 相关方法
22 InputStream getInputStream() 返回此套接字的输入流
23 OutputStream getOutputStream() 返回此套接字的输出流
24 */
25 public class ClientDemo {
26 public static void main(String[] args) throws IOException {
27 //创建客户端的Socket对象(Socket)
28 // Socket s = new Socket(InetAddress.getByName("MSI-YUBABY"), 10000);
29 Socket s = new Socket("MSI-YUBABY", 10000);
30
31 //获取输出流,写数据
32 OutputStream os = s.getOutputStream();
33 os.write("hello, tcp".getBytes());
34
35 //释放资源
36 s.close();
37
38 //直接运行客户端ClientDemo-main
39 //Exception in thread "main" java.net.ConnectException: Connection refused: connect
40 //因为TCP需要三次握手,必须有与之匹配的服务端
41 }
42 }
1 package day12.lesson3;
2
3 import java.io.IOException;
4 import java.io.InputStream;
5 import java.net.ServerSocket;
6 import java.net.Socket;
7
8 /*
9 3.2 TCP接收数据
10 构造方法
11 ServletSocket(int port) 创建绑定到指定端口的服务器套接字
12 相关方法
13 Socket accept() 监听要连接到此的套接字并接受它
14 */
15 public class ServerDemo {
16 public static void main(String[] args) throws IOException {
17 //创建服务器端的Socket对象(ServerSocket)
18 ServerSocket ss = new ServerSocket(10000);
19
20 //Socket accept() 侦听要连接到此套接字并接受它
21 Socket s = ss.accept();
22
23 //获取输入流,读数据,并把数据显示在控制台
24 InputStream is = s.getInputStream();
25 byte[] bytes = new byte[1024];
26 int len = is.read(bytes);
27 String data = new String(bytes, 0, len);
28 System.out.println("接收到的数据:" + data);
29
30 //释放资源
31 s.close();
32 ss.close();
33
34 //先执行ServerDemo-main,再执行ClientDemo-main
35 }
36 }