java学习之利用TCP实现的简单聊天示例代码

TCP

TCP协议是面向连接、保证高可靠性(数据无丢失、数据无失序、数据无错误、数据无重复到达)传输层协议。

TCP通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于端到端的通讯。

本文主要介绍了java利用TCP实现简单聊天的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

示例代码

使用tcp协议实现的简单聊天功能(非常简单的)

思想:使用2个线程,一个线程是用来接收消息的,另一个线程是用来发消息的。

客户端Demo代码:

?

1

2

3

4

5

6

7

8

9

10

11

public class SendDemo {

 public static void main(String[] args) throws Exception{

 Socket socket= new Socket(InetAddress.getLocalHost(),8888);

 SendImpl sendImpl= new SendImpl(socket);

 //发送的线程

 new Thread(sendImpl).start();

 //接收的线程

 ReciveImpl reciveImpl=new ReciveImpl(socket);

 new Thread(reciveImpl).start();

 }

}

服务器端Demo代码:

?

1

2

3

4

5

6

7

8

9

10

public class ServerDemo {

 public static void main(String[] args) throws Exception {

 ServerSocket serverSocket =new ServerSocket(8888);

 Socket socket=serverSocket.accept();

 SendImpl sendImpl= new SendImpl(socket);

 new Thread(sendImpl).start();

 ReciveImpl reciveImpl=new ReciveImpl(socket);

 new Thread(reciveImpl).start();

 }

}

发送线程的Demo代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

public class SendImpl implements Runnable{

 private Socket socket;

 public SendImpl(Socket socket) {

 this.socket=socket;

 // TODO Auto-generated constructor stub

 }

 @Override

 public void run() {

 Scanner scanner=new Scanner(System.in);

 while(true){

  try {

  OutputStream outputStream = socket.getOutputStream();

  String string= scanner.nextLine();

  outputStream.write(string.getBytes());

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

 }

 }

}

接收线程的Demo代码:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

public class ReciveImpl implements Runnable {

 private Socket socket;

 public ReciveImpl(Socket socket) {

 this.socket=socket;

 // TODO Auto-generated constructor stub

 }

 @Override

 public void run() {

 while(true ){

  try {

  InputStream inputStream = socket.getInputStream();

  byte[] b=new byte[1024];

  int len= inputStream.read(b);

  System.out.println("收到消息:"+new String(b,0,len));

   

  } catch (IOException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

 }

 }

}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值