Server:
package midi.socket;

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

public class PowerEchoServer {

/**
* @param args
*/
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(10000);
System.out.println("Echo Server started!");
while (true) {
Socket socket = server.accept();
System.out.println("a new comer!");
Runnable r = new EchoHandlerThread(socket, 10000);
Thread t = new Thread(r);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}

}

}
处理线程:
package midi.socket;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;

public class EchoHandlerThread implements Runnable {

Socket socket = null;
int port = 0;
public EchoHandlerThread(Socket socket, int port) {
this.socket = socket;
this.port = port;
}
public void run() {
try {
InputStream inStream = socket.getInputStream();
OutputStream outStream = socket.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inStream));
PrintWriter pw = new PrintWriter(outStream);
pw.write("Welcome ");
pw.write("Type BYE to exit! ");
pw.flush();
boolean done = false;
String line = null;
while(!done && (line=br.readLine())!=null) {
pw.write("Echo:"+line+" ");
pw.flush();
if(line.trim().equalsIgnoreCase("bye"))
done=true;
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

}
package midi.socket;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class PowerEchoServer {
/**
* @param args
*/
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(10000);
System.out.println("Echo Server started!");
while (true) {
Socket socket = server.accept();
System.out.println("a new comer!");
Runnable r = new EchoHandlerThread(socket, 10000);
Thread t = new Thread(r);
t.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package midi.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
public class EchoHandlerThread implements Runnable {
Socket socket = null;
int port = 0;
public EchoHandlerThread(Socket socket, int port) {
this.socket = socket;
this.port = port;
}
public void run() {
try {
InputStream inStream = socket.getInputStream();
OutputStream outStream = socket.getOutputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inStream));
PrintWriter pw = new PrintWriter(outStream);
pw.write("Welcome ");
pw.write("Type BYE to exit! ");
pw.flush();
boolean done = false;
String line = null;
while(!done && (line=br.readLine())!=null) {
pw.write("Echo:"+line+" ");
pw.flush();
if(line.trim().equalsIgnoreCase("bye"))
done=true;
}
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
本文介绍了一个简单的回显服务器的实现方法,使用Java语言通过创建ServerSocket监听端口,并为每个连接创建处理线程来接收客户端消息并将其返回。文章详细展示了如何利用Socket API进行网络通信。

923

被折叠的 条评论
为什么被折叠?



