java TCP做聊天程序是应该一个聊天窗口一个线程还是一个Socket一个线程

java TCP做聊天程序是应该一个聊天窗口一个线程还是一个Socket一个线程,第1张

socket通讯是阻塞的,一个聊天就有一个socket,需要一直在哪里阻塞读取数据,所以就一个socket就要用一个线程了。如果用nio的话,通讯是非阻塞的,就不用一个聊天一个线程了。如果聊天人数大的话,建议用nio。现在netty框架就非常不错。

Server端:

import java.io.*

import java.net.*

import java.applet.Applet

public class TalkServer{

public static void main(String args[]) {

try{

ServerSocket server=null

try{

server=new ServerSocket(4700)

}catch(Exception e) {

System.out.println("can not listen to:"+e)

}

Socket socket=null

try{

socket=server.accept()

}catch(Exception e) {

System.out.println("Error."+e)

}

String line

BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()))

PrintWriter os=new PrintWriter(socket.getOutputStream())

BufferedReader sin=new BufferedReader(new InputStreamReader(System.in))

System.out.println("Client:"+is.readLine())

line=sin.readLine()

while(!line.equals("bye")){

os.println(line)

os.flush()

System.out.println("Server:"+line)

System.out.println("Client:"+is.readLine())

line=sin.readLine()

}

os.close()

is.close()

socket.close()

server.close()

}catch(Exception e){

System.out.println("Error:"+e)

}

}

}

Client端:

import java.io.*

import java.net.*

public class TalkClient {

public static void main(String args[]) {

try{

Socket socket=new Socket("127.0.0.1",4700)

BufferedReader sin=new BufferedReader(new InputStreamReader(System.in))

PrintWriter os=new PrintWriter(socket.getOutputStream())

BufferedReader is=new BufferedReader(new InputStreamReader(socket.getInputStream()))

String readline

readline=sin.readLine()//从系统标准输入读入一字符串

while(!readline.equals("bye")){

os.println(readline)

os.flush()

System.out.println("Client:"+readline)

System.out.println("Server:"+is.readLine())

readline=sin.readLine()//从系统标准输入读入一字符串

}

os.close()//关闭Socket输出流

is.close()//关闭Socket输入流

socket.close()//关闭Socket

}catch(Exception e) {

System.out.println("Error"+e)//出错,则打印出错信息

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7811147.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存