java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)
服務器:
public class Chat {
public static void main(String[]args) throws IOException
{
System.out.println("服務器啟動中...");
//創建服務器
ServerSocket server=new ServerSocket(9999);
//阻塞式等待連接,當客戶端Socket創建好以后才開啟
while(true)
{
Socket client=server.accept();
System.out.println("一個客戶端建立了連接");
new Thread(()->{
DataInputStream dis = null;
DataOutputStream dos = null;
try {
dis = new DataInputStream(client.getInputStream());
dos = new DataOutputStream(client.getOutputStream());
} catch (IOException e1) {
e1.printStackTrace();
}
boolean flag=true;
while(flag) {
String msg = null;
try {
msg = dis.readUTF();
dos.writeUTF(msg);
dos.flush();
} catch (IOException e) {
//當斷掉客戶端連接時,不用循環再讀取數據
flag=false;
}
//返回消息
}
try {
if(null!=dos)
{
dos.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=dis)
{
dis.close();
}
} catch (IOException e) {
e.printStackTrace();
}
try {
if(null!=client)
{
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
}
}
}
客戶端:
public class Client {
public static void main(String[]args) throws UnknownHostException, IOException
{
System.out.println("客戶端啟動中...");
Socket client=new Socket("localhost",9999);
//客戶端發送消息
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
DataInputStream dis =new DataInputStream(client.getInputStream());
boolean flag=true;
while(flag) {
System.out.println("請輸入消息");
String msg=br.readLine();
dos.writeUTF(msg);
dos.flush();
//獲取消息
msg=dis.readUTF();
System.out.println(msg);
}
dos.close();
dis.close();
client.close();
}
}
總結
以上是生活随笔為你收集整理的java可视化多人群聊,java 网络编程-TCP-多人群聊(自问自答)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ASP.NET Core 2.2+Qua
- 下一篇: 编码表(ASCII码GB2312gbku