Socket实现简单聊天

Posted gk126

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Socket实现简单聊天相关的知识,希望对你有一定的参考价值。

服务端:

技术图片
package main.java.com.socket_dome;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class LoginServer {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        ServerSocket serverSocket = null;
        Socket socket = null;
       
        try {
            //输入提示语,代表服务端成功启动
            System.out.println("启动成功!");
            //建立客户端,并连接8080端口号
            serverSocket = new ServerSocket(8080);
            //监听客户端
            socket = serverSocket.accept();
            //打开socket的I/O流
            InputStream is = socket.getInputStream();
            OutputStream os = socket.getOutputStream();
            //循环,让服务端一直处于监听状态
            while(true){
                //接收来自客户端的信息,并且打印在控制台
                int len = 0;
                byte[] b = new byte[1024];
                len = is.read(b);
                System.out.println("客户端说:"+ new String(b,0,len));
                System.out.println("服务端输入:");
                //把回复的内容打散成字节数组发送给客户端
                String reply = input.next();
                os.write(reply.getBytes());
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                //关闭socked,切记不可以关闭i/o流
                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}
View Code

客户端:

技术图片
package main.java.com.socket_dome;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.sql.SQLOutput;
import java.util.Scanner;

public class Clinet {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        Socket socket = null;
        OutputStream os = null;
        InputStream is = null;

        try {
            //建立客户端,本机连接测试
            socket = new Socket("localhost",8080);
            //打开输出流
            os = socket.getOutputStream();
            is = socket.getInputStream();
            //不断的来回交互,因此写个死循环
            while (true){
                //发送信息给客户
                System.out.println("客户端输入:");
                os.write(input.next().getBytes());
                //接收读取的信息
                int len = 0 ;
                byte[] b = new byte[1024];
                len = is.read(b);
                System.out.println("服务器说:"+ new String(b,0,len));

            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
             try {
                    //关闭socket
                    if (socket != null) {
                        socket.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

}
View Code

效果:

技术图片

 

技术图片 

 

以上是关于Socket实现简单聊天的主要内容,如果未能解决你的问题,请参考以下文章

WPF使用socket实现简单聊天软件

node实现一个简单的聊天室(认识一下socket)

游戏开发实战Unity使用Socket通信实现简单的多人聊天室(万字详解 | 网络 | TCP | 通信 | Mirror | Networking)

游戏开发实战Unity使用Socket通信实现简单的多人聊天室(万字详解 | 网络 | TCP | 通信 | Mirror | Networking)

Socket实现简单聊天

多线程+socket实现多人聊天室