java37.Socket通信------使用ServerSocket建立聊天服务器---1

来源:互联网 发布:视频翻译软件下载 编辑:程序博客网 时间:2024/06/05 15:13

1.建立一个MyServerSocket类

package com.jikexueyuan.testmyserversocket.main;public class MyServerSocket {    public static void main(String[] args) {        new ServerListner().start();    }}

2.建立一个ServerListner类

package com.jikexueyuan.testmyserversocket.main;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import javax.swing.JOptionPane;public class ServerListner extends Thread {    public void run() {        try {            // 1-65535            ServerSocket serverSocket = new ServerSocket(12345);// 服务器启动监听了12345            while (true) {                Socket socket = serverSocket.accept();// 线程阻塞---等待客户端连接12345端口                // 建立连接                JOptionPane.showMessageDialog(null, "有客户端链接到了本机的12345端口");                // 将socket传递给新的线程                new ChatSocket(socket).start();            }        } catch (IOException e) {            e.printStackTrace();        }    }}

3.建立一个ChatSocket类

package com.jikexueyuan.testmyserversocket.main;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.Socket;public class ChatSocket extends Thread {    Socket socket;    public ChatSocket(Socket s) {        this.socket = s;    }    public void out(String out) {        try {            socket.getOutputStream().write(out.getBytes("UTF-8"));        } catch (UnsupportedEncodingException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }    public void run() {        int count = 0;        while (count <= 10) {            count++;            out("loop+" + count);            try {                sleep(1000);            } catch (InterruptedException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}

4.运行之后打开cmd命令窗口:

1.这里写图片描述
2.
这里写图片描述
3.
这里写图片描述
4.打开多个终端时,每个终端分配一个线程,都是从1开始循环
这里写图片描述

0 0
原创粉丝点击