1、要求客户端能够判断是否有网络,客户端是否连接到服务端。
2、服务端同一时间内只能和一个客户端通信,此时,其他客户端试图与服务端连接时会有"已有其他用户连接"的提示,并断开连接。
3、如果采用多线程,必须考虑线程安全性客户端断开连接时,服务端要关闭线程和客户端的连接,释放资源。否则,此条不做考虑。
有代码参考最好。
2、服务端同一时间内只能和一个客户端通信,此时,其他客户端试图与服务端连接时会有"已有其他用户连接"的提示,并断开连接。
3、如果采用多线程,必须考虑线程安全性客户端断开连接时,服务端要关闭线程和客户端的连接,释放资源。否则,此条不做考虑。
有代码参考最好。
对象的序列化和thread这两个地方算是难点,socket在你的应用中很简单。
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;public class Server { /**
* @author lybjust
*/
private ServerSocket serverSocket;
private Socket socket;
private BufferedReader in;
private PrintWriter out; public Server() {
try {
serverSocket = new ServerSocket(10000);
while (true) {
socket = serverSocket.accept();
String remoteIP = socket.getInetAddress().getHostAddress();
String remotePort = ";" + socket.getLocalPort();
System.out.println("a client come in~~IP:" + remoteIP
+ remotePort);
in = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String line = in.readLine();
System.out.println("client send message is:" + line);
out = new PrintWriter(socket.getOutputStream(), true);
out.println("you message received~~");
out.close();
in.close();
socket.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
new Server();
}}
package Client;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;public class Client { /**
* @author lybjust
*/
private Socket socket;
private BufferedReader in;
private PrintWriter out; public void Client() {
try {
System.out.println("Try to Connect to 127.0.0.1:10000");
socket = new Socket("127.0.0.1", 10000);
System.out.println("The Server Connected!");
System.out.println("Please enter some Character:");
in = new BufferedReader(new InputStreamReader(System.in));
String line = in.readLine();
out = new PrintWriter(socket.getOutputStream());
out.print(line);
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
String ln = br.readLine();
System.out.println(ln);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void main(String[] args) {
// TODO Auto-generated method stub
new Client();
}}