废话不多说...直接看代码
服务器端...
Server.java
package test;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static ServerSocket ss;
int i=10000;
public Server(){
try {
System.out.println("监听端口:"+i);
ss = new ServerSocket(i);
Socket socket = ss.accept();
Socket_List.setSocket(i, socket);
System.out.println("在端口 "+i+" 有新连接:"+Socket_List.getSocket(i).getRemoteSocketAddress());
new Thread(new getMessage(i)).start();
} catch (Exception e) {
System.out.println("连接客户端异常"+e.getMessage());
}
}
public static void main(String[] args) {
new Server();
}
}
Socket_list.java
package test;
import java.net.Socket;
import java.util.HashMap;
import java.util.Map;
public class Socket_List {
private static Map<Integer, Socket> map= new HashMap<Integer, Socket>();
private static Socket_List list;
public static Socket_List getThis()
{
if(list==null)
list= new Socket_List();
return list;
}
public static Socket getSocket(int i)
{
return map.get(i);
}
public static void setSocket(int i,Socket socket)
{
map.put(i, socket);
}
}
getMessage.java
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
public class getMessage implements Runnable{
private int i=0;
public static String getMessages(int id) throws Exception
{
BufferedReader reader=new BufferedReader(new InputStreamReader(Socket_List.getSocket(id).getInputStream()));
return reader.readLine();
}
public static void sendMessages(int id,String message) throws Exception
{
PrintWriter send=new PrintWriter(Socket_List.getSocket(id).getOutputStream());
send.println(message);
send.flush();
}
public getMessage(int i) {
this.i=i;
}
@Override
public void run() {
try {
while(true)
{
String Message=getMessages(i);
System.out.println("来自"+Socket_List.getSocket(i).getRemoteSocketAddress()+"的信息:"+Message);
sendMessages(i, Message);
System.out.println("向客户端发送信息:"+Message);
}
} catch (Exception e) {
try {
System.out.println("客户端"+Socket_List.getSocket(i).getRemoteSocketAddress()+"断开连接~!");
Socket_List.getSocket(i).close();
Server.ss.close();
new Server();
} catch (Exception e1) {
System.out.println("未能正常关闭Socket!~");
}
}
}
}
客户端
Client.java
package test;
import java.net.Socket;
public class Client {
int i=10000;
public Client(){
try {
Socket client=new Socket("127.0.0.1",i);
System.out.println("已连接"+i);
new Thread(new ClientgetMessage(client)).start();
} catch (Exception e) {
System.out.println("未能连接到服务器"+e.getMessage());
}
}
public static void main(String[] args) {
new Client();
}
}
ClientgetMessage.java
package test;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ClientgetMessage implements Runnable{
private Socket socket;
public ClientgetMessage(Socket socket) {
this.socket=socket;
}
public void run() {
new Thread(new getMessages(socket)).start();
new Thread(new sendMessages(socket)).start();
}
}
class getMessages implements Runnable
{
private Socket socket;
getMessages(Socket socket)
{
this.socket=socket;
}
public void run() {
try {
while(true)
{
BufferedReader reader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String Message=reader.readLine();
System.out.println("来自"+socket.getRemoteSocketAddress()+"的信息:"+Message);
}
} catch (Exception e) {
try {
System.out.println("服务器"+socket.getRemoteSocketAddress()+"断开连接~!");
socket.close();
new Client();
System.exit(0);
} catch (Exception e1) {
System.out.println("未能正常关闭Socket!~");
}
}
}
}
class sendMessages implements Runnable
{
private Socket socket;
sendMessages(Socket socket)
{
this.socket=socket;
}
public void run() {
try {
while(true)
{
PrintWriter send=new PrintWriter(socket.getOutputStream());
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
send.println(reader.readLine());
send.flush();
}
} catch (Exception e) {
System.out.println("发送消息失败");
}
}
}
-----------------------------------程序员 闫帆原创---------------------------------------
转载请注明原创人信息 程序员 闫帆yanfanvip