java实现聊天功能

这个是如何实现的呢?今天我就用java来实现聊天功能。

首先,我们先在一个包下创建两个类,分别为客户端类(MyClient)和服务端类(MyServer)。

接下来,就可以往里面写代码了。代码如下:

先在MyClient类里创建一个socket连接,用来发送字节流:

Socket socket = new Socket("127.0.0.1",9999);

"127.0.0.1"为本机IP,9999为端口号。

在MyServer类里创建一个new ServerSocket俩接收字节流:

ServerSocket server = new ServerSocket(9999);

传入端口号9999,必须与之前设置的端口号一致。

然后用server里的accept()方法来与Socket建立连接:

Socket socket = server.accept();

连接成功后就可以发送或接收字节流了。

我们先用MyServer端来发送字节:

OutputStream out = socket.getOutputStream();

用socket调用getOutputStream()方法来获取字节输出流,然后用OutputStream out来接收。

从键盘输入一段字符串作为要发送的内容:

Scanner input = new Scanner(System.in);

String str = input.next();

用out调用write()方法来发出你要发送的内容,由于write()只接受字节,所以要用字符串的getBytes()放来将字符串转为字节数组:

out.write(str.getBytes());

内容发送后,我们用MyClient端来接收MyServer端发送来的字节:

InputStream in = socket.getInputStream();

用socket调用getInputStream()方法来获取字节输入流,然后用OutInStream in来接收。

由于它要接收的字节流的类型是字节类的,所以先定义一个字节数组来存放收到的字节:

byte[] bt = new byte[1024];

字节数组大小设置为1024B,也就是1KB。

用in调用read()放来读取接收到的字节:

in.read(bt);

传入字节数组bt。

最后输出内容:

注意输出的时候要把字节数组再次转化为字符串。

在MyClient端回复消息与之前MyServer发送消息的代码是一样的,MyServer接收回复的消息和MyClient接收消息的代码也是一样的。

注意:代码最后要将所有的流都关闭。

以上就是一次聊天的代码,但这只能发送和接收一次信息。

但聊天要不停的发送和接收信息,所以把代码放到一个循环操作里,这里我用的是do while循环。如下图:

MyClient端代码

MyServer端代码

(这个代码只能发送文字,并不能发送图片和视频)

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180415G0TPPC00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券