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();
}
}
}



posted @ 2012-03-30 08:37  海贼王路飞  阅读(280)  评论(0)    收藏  举报