[java]代码库
import java.io.InputStream;
import java.io.OutputStream;
import java.net.*;
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("正在有客户端访问" + client.getRemoteSocketAddress());
// 调用处理连接对象的方法去处理连接对象
processChat(client);
// 从连接对象上得到输入输出流对象
// OutputStream out=client.getOutputStream();
// InputStream ins=client.getInputStream();
//
// String s="你好,欢迎来到javake\r\n";
//
// byte[] data=s.getBytes();//获取这个字符串的字节
// out.write(data);//用输出对象发送数据
// out.flush();//强制输出
// int in=0;
// while(in!=13)
// {
// in=ins.read();
// System.out.println("读到的一个是"+in);
// }
// System.out.println("客户端按了回车,退出");
//
// client.close();//关闭与客户端的连接
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 处理连接对象,读取客户端发来的字符串,回送给客户端
*
*
*/
private void processChat(Socket client) throws Exception {
// 从连接对象上得到输入输出流对象
OutputStream out = client.getOutputStream();
InputStream ins = client.getInputStream();
String s = "你好,欢迎来到服务器javake\r\n";
byte[] data = s.getBytes();// 获取这个字符串的字节
out.write(data);// 用输出对象发送数据
out.flush();// 强制输出
// 调用读取字符串的方法,从输入流中读取一个字符串
String inputS = readString(ins);
int in = 0;
while (!inputS.equals("bye")) {
System.out.println(" 客户端说" + inputS);
s = "服务器收到" + inputS + "\r\n";
data = s.getBytes();// 取得组成这个字符串的字节数组
out.write(data);
out.flush();
inputS = readString(ins);// 读取客户端的下一次输入
}
s = "你好,欢迎再来 \r\n";
data = s.getBytes();
out.write(data);
out.flush();
client.close();// 关闭与客户端的连接
}
/**
*
* 从输入流对象中读取字节,拼成一个字符串返回 如果读到一个字符值为13,则认为以前的是一个字符串 ins:输入 流对象
* return:从流上(客户端发来的)读到字符串
*/
private String readString(InputStream ins) throws Exception {
// 创建一个字符串缓冲区
StringBuffer stb = new StringBuffer();
char c = 0;
while (c != 13) {
int i = ins.read();// 读取客户端发来的一个字节
c = (char) i;// 将输入的字节转换为一个Char
stb.append(c);// 将读取到的一个字符加到字符串缓冲区中
}
// 将读到的字节数组转换为字符串,并调用trim去掉尾部的空格
String inputS = stb.toString().trim();
return inputS;
}
public static void main(String[] args) {
ChatServer cs = new ChatServer();
cs.setUpServer(1234);
}
}