`
zhuobinzhou
  • 浏览: 133718 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类

读书笔记《微博是这样子炼成的:从聊天室到Twitter的技术实现》之聊天室的实现(一)

阅读更多

书中程序:

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServer {
	
	public void setUpServer(int port){
		try {
			ServerSocket server = new ServerSocket(port);
			System.out.println("服务器创建成功,所使用的端口号:" + port );
			while(true){
				Socket client = server.accept();
				System.out.println("Incoming client :" 
						+ client.getRemoteSocketAddress());
				processChat(client);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	private void processChat(Socket client) throws IOException{
		OutputStream out = client.getOutputStream();
		InputStream ins = client.getInputStream();
		String s = "你好,欢迎来到服务器!\r\n";
		byte[] data = s.getBytes();
		out.write(data);
		out.flush();
		String inputS = readingString(ins);
		while(!inputS.equals("bye")){
			System.out.println("客户端说:" + inputS);
			s = "服务器收到:" + inputS + "\r\n";
			data = s.getBytes();
			out.write(data);
			out.flush();
			inputS = readingString(ins);
		}
		s = "你好,欢迎再来!\r\n";
		data = s.getBytes();
		out.write(data);
		out.flush();
		client.close();
	}
	
	private String readingString(InputStream ins) throws IOException{
		StringBuffer stb = new StringBuffer();
		char c = 0 ;
		while(c != 13){
			int i = ins.read();
			c = (char)i;
			stb.append(c);
		}
		String inputS = stb.toString().trim();
		return inputS; 
	}
	public static void main(String[] args) {
		ChatServer cs = new ChatServer();
		cs.setUpServer(9090);
	}
	
}

 

1、运行程序,在Eclipse的Console中输出:

 

服务器创建成功,所使用的端口号:9090

 

2、打开命令行窗口,输入:telnet localhost 9090   得到:

 

3、在Eclipse的Console中输出:

 

服务器创建成功,所使用的端口号:9090
Incoming client :/0:0:0:0:0:0:0:1:53388
客户端说:nihao


程序现在不能读取中文字符,只能连接一个客户端。

 

  • 大小: 20.9 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics