即时通讯

public class ClientDemo {
public static void main(String[] args) throws Exception{
System.out.println("=====客户端启动=====");
Socket socket = new Socket("127.0.0.1",9999);

new Shou(socket).start();

OutputStream os = socket.getOutputStream();

PrintStream ps = new PrintStream(os);
Scanner sc = new Scanner(System.in);
while(true){
System.out.println("请说");
String rs = sc.nextLine();
ps.println(rs);
}

}
}
class DuXiaoxi extends Thread {
private Socket socket;

public DuXiaoxi(Socket socket) {
this.socket = socket;
}

@Override
public void run() {
try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

String rs;
while ((rs = br.readLine()) != null){
System.out.println(socket.getRemoteSocketAddress() +"说了:"+rs);
}
} catch (IOException e) {
System.out.println("您被踢出群聊");
}
}
}
===
public class ServerDemo {
public static ArrayList<Socket> Allonlinesocket = new ArrayList<>();
public static void main(String[] args) {
try {
System.out.println("=====服务端启动=====");
ServerSocket serverSocket = new ServerSocket(9999);//这个不能放循环里面


while (true) {
Socket socket = serverSocket.accept();

Allonlinesocket.add(socket);


new MyThead(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

class MyThead extends Thread{
private Socket socket;

public MyThead(Socket socket) {
this.socket = socket;
}

@Override
public void run() {

try {
InputStream is = socket.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));

String rs;
while ((rs = br.readLine()) != null){
System.out.println(socket.getRemoteSocketAddress() +"说了:"+rs);
sendMsgToAll(rs);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void sendMsgToAll(String msg) throws Exception{
for (Socket socket : ServerDemo.Allonlinesocket) {
OutputStream outputStream = socket.getOutputStream();
PrintStream ps = new PrintStream(outputStream);
ps.print(msg);
ps.flush();
}
}
}

posted on 2022-04-03 10:56  我要当程序源  阅读(59)  评论(0编辑  收藏  举报

导航