一、TCP套接字编程架构如下
二、相关代码实现
1、服务器端代码
package com. company ; import java. io. IOException ;
import java. net. InetSocketAddress ;
import java. net. ServerSocket ;
import java. net. Socket ; public class Main { public static void main ( String [ ] args) {
try { ServerSocket serverSocket = new ServerSocket ( 8081 , 3 ) ; System . out. println ( "服务开始进行监听,监听端口为8081" ) ; int i= 1 ; while ( true ) { Socket socket = serverSocket. accept ( ) ; byte [ ] byet1= new byte [ 20 ] ; try { socket. getInputStream ( ) . read ( byet1) ; String str = new String ( byet1) ; System . out. println ( str) ; InetSocketAddress socketAddress= ( InetSocketAddress ) socket. getRemoteSocketAddress ( ) ; System . out. println ( socketAddress. getHostName ( ) + " " + socketAddress. getPort ( ) ) ; } catch ( IOException e) { e. printStackTrace ( ) ; } try { Thread . sleep ( 50000 ) ; socket. close ( ) ; } catch ( InterruptedException e) { e. printStackTrace ( ) ; } } } catch ( IOException e) { e. printStackTrace ( ) ; } }
}
1、创建服务,并监听特定的端口,设置TCP链接队列长度; 2、backlog可以设置队列的长度,成功创建链接的会被存储到此全连接队列中,等待线程调用accept方法将其从中一个一个移出;
2、客户端代码
package com. company ; import java. io. IOException ;
import java. net. Socket ;
import java. nio. charset. StandardCharsets ; public class Main { public static void main ( String [ ] args) { byte [ ] byte2= new byte [ 20 ] ; int i= 1 ; String string= "hello world" ; for ( ; i< 3 ; i++ ) { try { String str= string+ i; byte2= string. getBytes ( StandardCharsets . UTF_8 ) ; Socket socket = new Socket ( "127.0.0.1" , 8081 ) ; System . out. println ( socket. getLocalAddress ( ) . getHostAddress ( ) + " " + socket. getLocalPort ( ) ) ; socket. setKeepAlive ( true ) ; System . out. println ( str) ; socket. getOutputStream ( ) . write ( byte2) ; Thread . sleep ( 10000 ) ; } catch ( IOException | InterruptedException e) { e. printStackTrace ( ) ; } } }
}