改造前:
改造后:
仅仅改写Server类
import java.io.*;
import java.net.*;
public class Server implements Runnable{
Socket connectionSocket;
public Server(Socket connectionSocket){
this.connectionSocket = connectionSocket;
}
public static void main(String argv[]) throws IOException {
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true){
Socket connectionSocket = welcomeSocket.accept();
Thread t = new Thread(new Server(connectionSocket));
t.start();
}
}
@Override
public void run() {
String clientSentence = null;
String capitalizedSentence;
BufferedReader inFromClient = null;
try {
inFromClient = new BufferedReader(
new InputStreamReader(
this.connectionSocket.getInputStream()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DataOutputStream outToClient = null;
try {
outToClient = new DataOutputStream(
this.connectionSocket.getOutputStream());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
clientSentence = inFromClient.readLine();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
capitalizedSentence = clientSentence.toUpperCase() + '\n';
try {
outToClient.writeBytes(capitalizedSentence);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
UDP:本身就没有被霸占什么资源...找不到并发的理由...如果处理数据业务更加复杂的时候才会需要...
TCP:通讯所使用的套接字被占用,其他数据排队,并发可以解决这个问题(占着地方不干事).