项目功能:
实现一次发送和接收,服务器接收客户端发送的内容并打印出来
用最通俗的语言讲解下,上图中大椭圆是服务器,A、C是客户端,当客户端和服务器通过socket建立连接后
1.两者之间形成一个通道,此时将要发送的内容放入流中:out.wirte(“字节数组")
2.服务器端使用客户端的对象得到socket s,s包括客户端的IP,端口,内容等属性
3.in来获取s中的内容,也就是客户端的out和服务器端的in一一对应
4.最后服务器将(根据客户端生成的)s关闭。只有服务器的套接字ss可选择性关闭
代码:
1 /* 2 * 客户端: 3 * 通过查阅socket对象,发现TCP是面向连接的,所有对象建立时,就连接指定主机 4 * 服务端存在并连接成功,形成通路后,再该通道进行数据传输 5 6 步骤: 7 1.创建socket服务,指定目的主机和端口 8 */ 9 import java.io.*; 10 import java.net.*; 11 12 class tcpClient 13 { 14 public static void main(String[] args) throws IOException{ 15 //1.创建socket服务,指定目的主机和端口 16 Socket s =new Socket("192.168.1.103",10000); 17 18 //为了发送数据,应获取socket流的输出流 19 OutputStream out = s.getOutputStream(); 20 21 //将内容放到流中 22 out.write("tcp 我是客户端".getBytes()); 23 24 s.close(); 25 } 26 } 27 28 /* 29 需求:定义端点接收数据并打印在控制台 30 31 服务端: 32 1.创建服务端serversocket对象并指定端口 33 当不指定时,使用connect方法指定 34 2. 获取连接过来的客户端对象 35 通过serversocket的accept方法等待,阻塞式,无连接一直等待 36 3.客户端如果发过来数据,服务端使用对应连接的读取流获取发过来数据 37 打印在服务台 38 4,关闭服务端(可选) 39 */ 40 41 class tcpServer 42 { 43 public static void main(String[] args) throws IOException{ 44 45 //建立服务端socket服务,并监听端口 46 ServerSocket ss =new ServerSocket(10000); 47 48 //通过accept方法获取链接过来的客户端对象(s中有内容,端口,IP属性) 49 Socket s = ss.accept(); 50 //IP: 51 String ip =s.getInetAddress().getHostAddress(); 52 System.out.println(ip+"...连接成功" ); 53 //内容:获取客户端发送过来的数据,那么要使用客户端对象s 54 InputStream in = s.getInputStream(); 55 56 byte[] buf =new byte[1024]; 57 int len=in.read(buf); 58 String content = new String(buf,0,len); 59 System.out.println("内容:"+content ); 60 61 s.close();//关闭客户端,服务器可以控制客户 62 ss.close();//关闭服务端,可选操作 63 } 64 }
时间: 2024-10-06 04:02:49