书中程序:
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
程序现在不能读取中文字符,只能连接一个客户端。