夜光序言:
笼中鸟--得到的是安逸,而失去的是自由~~
正文:
运行结果:对比之前的嗯~~
新写了一个服务端:
import java.net.*;
public class TcpServer2
// 夜光 这个就比较有意思了~~
// 每启动一个客户端,都会有对应嗯~~
{
public static void main(String [] args)
{
try
{
// 夜光 并不是说客户端开的越多越好,如果线程太多,会导致服务端爆炸~~
ServerSocket ss=new ServerSocket(8001);
while(true)
{
Socket s=ss.accept();
System.out.println("来了一个client");
new Thread(new Worker(s)).start();
}
//ss.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
核心点:我们还需要再写一个java类~~
import java.net.*;
import java.io.*;
// 夜光 服务端代码加载这个java类
class Worker implements Runnable {
Socket s;
public Worker(Socket s) {
this.s = s;
}
public void run() {
try {
System.out.println("服务人员已经启动");
InputStream ips = s.getInputStream();
OutputStream ops = s.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(ips));
DataOutputStream dos = new DataOutputStream(ops);
while (true) {
String strWord = br.readLine();
System.out.println("client said:" + strWord +":" + strWord.length());
if (strWord.equalsIgnoreCase("quit"))
break;
String strEcho = strWord + " 666";
// dos.writeBytes(strWord +"---->"+ strEcho +"\r\n");
System.out.println("server said:" + strWord + "---->" + strEcho);
dos.writeBytes(strWord + "---->" + strEcho + System.getProperty("line.separator"));
}
br.close();
// 夜光 关闭包装类,会自动关闭包装类中所包装的底层类。所以不用调用ips.close()
dos.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}