一.服务端代码:
import java.net.*; // for Socket, ServerSocket, and InetAddress import java.io.*; // for IOException and Input/OutputStream public class TCPEchoServer { private static final int BUFSIZE = 32; // Size of receive buffer public static void main(String[] args) throws IOException { int servPort = 5500; // Create a server socket to accept client connection requests ServerSocket servSock = new ServerSocket(servPort); int recvMsgSize; // Size of received message byte[] receiveBuf = new byte[BUFSIZE]; // Receive buffer while (true) { // Run forever, accepting and servicing connections Socket clntSock = servSock.accept(); // Get client connection SocketAddress clientAddress = clntSock.getRemoteSocketAddress(); System.out.println("Handling client at " + clientAddress); InputStream in = clntSock.getInputStream(); OutputStream out = clntSock.getOutputStream(); // Receive until client closes connection, indicated by -1 return while ((recvMsgSize = in.read(receiveBuf)) != -1) { out.write(receiveBuf, 0, recvMsgSize); } clntSock.close(); // Close the socket. We are done with this client! } /* NOT REACHED */ } }
二.客户端代码:
import java.net.*; import java.io.*; public class TCPEchoClient { public static void main(String[] args) throws IOException { String server = "127.0.0.1"; // Server name or IP address int servPort = 5500; //// Server port byte[] data = "Hi, World".getBytes(); // Create socket that is connected to server on specified port Socket socket = new Socket(server, servPort); System.out.println("Connected to server...sending echo string"); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); out.write(data); // Send the encoded string to the server // Receive the same string back from the server int totalBytesRcvd = 0; // Total bytes received so far int bytesRcvd; // Bytes received in last read while (totalBytesRcvd < data.length) { if ((bytesRcvd = in.read(data, totalBytesRcvd, data.length - totalBytesRcvd)) == -1) throw new SocketException("Connection closed prematurely"); totalBytesRcvd += bytesRcvd; } // data array is full System.out.println("Received: " + new String(data)); socket.close(); // Close the socket and its streams } }
上述代码的TCP服务端是单线程,一次只能服务一个客户端。
参考:
相关推荐
NULL 博文链接:https://1358440610-qq-com.iteye.com/blog/2114621
Socket网络编程学习笔记之---使用线程池提高性能
NULL 博文链接:https://1358440610-qq-com.iteye.com/blog/2114632
VC学习笔记 基于TCP的socket编程
react-native-tcp-socket 使用客户端SSL / TLS支持对Android,iOS和macOS的本机TCP套接字API进行React。 它允许您创建TCP客户端和服务器套接字,以模仿Node的API功能(有关更多信息,请参见可用的 )。 目录 SSL...
基于tcp的简单socket通信程序,比较适合初学者
此案例采用modbus-tcp协议与设备进行通信,且分别应用Socket与第三方组件NModbus两种方式进行通信。
NULL 博文链接:https://1358440610-qq-com.iteye.com/blog/2115715
配合:合宙Air105|Socket|UDP |TCP/IP|W5500|Serial 串口|透传|DTU|网络测试助手|双机互联|内网测试|官方demo|学习(8-3):Socket网络接口-双机互联透传使用:双机互连DTU透传, AIR105+W5500作为TCP 服务器-dtu_...
基于java的modbus TCP通信
TCP-IP Socket网络编程TCP-IP Socket网络编程TCP-IP Socket网络编程TCP-IP Socket网络编程TCP-IP Socket网络编程TCP-IP Socket网络编程TCP-IP Socket网络编程
该资源是基于tcp的异步通讯,不是多线程,实现了一服务器多客户端
java-socket大文件上传-含客户端和服务端 java-socket大文件上传-含客户端和服务端
java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料java socket 学习资料
HP-Socket-TCP-&-UDP-通信框架开发指南-(v4.2-20170420)
Socket连接-TCP测试:本案例通过实现定向传输图片完成连接测试,图片大小有限,功能有限,可以共案例参考,
Java网络编程--TCP网络编程(tcp缩略语) java,io,socket,tcp,网络编程 学习TCP通信编程的好优秀资料!
三个完整代码,和一个网络调试工具。c#编写,socket通讯TCP协议server端、client端,UDP协议。
Java网络编程(socket---网上广播)
基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java Socket通信实现.zip 基于java的开发源码-Java ...