TCP的实现(一)
很久不写Socket了,很多API生疏了,最近准备把它整理一下,写一些实例。
java为Socket提供了两个比较重要的类:ServerSocket和Socket。其中ServerSocket用于建立服务器端,但是一旦Socket建立完成,服务器端和客户端就是一样的了。Socket通过InputStream和OutputStream来接受发送数据。
第一个服务器很简单,只有一个线程,接受到了客户端请求,就把客户端发送过来的内容,直接写回去。
package mxf.study.java.nio;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.MessageFormat;
public class TCPServer {
private static final int BUFSIZE = 32;
public static void main(String[] args) throws IOException{
ServerSocket servSocket = new ServerSocket(10000);
System.out.println(MessageFormat.format("开始启动监听,端口号:{0}", 10000));
// 接收数据的缓冲区
byte[] receiveBuf = new byte[BUFSIZE];
// 循环迭代,监听端口号,处理新的连接请求
while (true) {
// 阻塞等待,每接收到一个请求就创建一个新的连接实例
Socket clntSocket = servSocket.accept();
// 从客户端接收数据的对象
InputStream in = clntSocket.getInputStream();
// 向客户端发送数据的对象
OutputStream out = clntSocket.getOutputStream();
// 初始接收数据的总字节数
int recvMsgSize;
// 读取客户端发送的数据后,再发送到客户端
while ((recvMsgSize = in.read(receiveBuf)) != -1) {
out.write(receiveBuf, 0, recvMsgSize);
System.out.println("服务器 Received:" + new String(receiveBuf));
}
out.flush();
// 客户端关闭连接时,关闭连接
System.out.println(" 客户端关闭连接");
clntSocket.close();
}
}
}
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号