zoukankan      html  css  js  c++  java
  • SOCKET_简单实现多人聊天

    服务端:

    package com.kk.review;

    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.List;

    class Server extends Thread{
    static List<Socket> online=new ArrayList<Socket>(10);
    private Socket socket;
    public Server(Socket socket) {
    this.socket=socket;
    }

    public static void main(String[] args) {
    Server.receive();
    }

    static void receive(){
    try{
    ServerSocket server=new ServerSocket(1234);
    for (;;) {
    Socket socket=server.accept();
    new Server(socket).start();
    }
    }catch(IOException ioe){
    ioe.printStackTrace();
    }
    }

    @Override
    public void run() {
    while(true){
    try{
    online.add(socket);
    InputStream in=socket.getInputStream();
    byte []buf=new byte[1024];
    int len=in.read(buf);
    String str=new String(buf,0,len);
    for(Socket client:online){
    client.getOutputStream().write(str.getBytes());
    }
    }catch(IOException ioe){
    ioe.printStackTrace();
    }
    }
    }
    }

    客户端:

    package com.kk.review;

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.InetAddress;
    import java.net.Socket;

    class Client extends Thread{

    public static void main(String[] args) {
    Client.send();
    }

    static void send(){
    try{
    Socket client=new Socket(InetAddress.getByName(null),1234);
    OutputStream out=client.getOutputStream();
    new Client().start();
    // Scanner input=new Scanner(System.in);
    while(true){
    Thread.sleep(500);
    BufferedReader bis=new BufferedReader(new InputStreamReader(System.in));
    String str=bis.readLine();
    out.write(str.getBytes());
    }
    }catch(IOException ioe){
    ioe.printStackTrace();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    public void run() {
    try{
    Socket client=new Socket(InetAddress.getByName(null),1234);
    InputStream in=client.getInputStream();
    for (;;) {
    byte []buf=new byte[1024];
    int len=in.read(buf);
    String str=new String(buf,0,len);
    System.out.println("from server:".concat(str));
    }
    }
    catch(IOException ioe)
    {
    ioe.printStackTrace();
    }
    }
    }




  • 相关阅读:
    基于fis3的组件可视化道路
    前端性能——监控起步
    uploadify使用的一些经验总结
    浏览器加载和渲染HTML的过程(标准定义的过程以及现代浏览器的优化)
    github常见问题【转自百度知道】
    轮播的实现方式
    前端打包构建工具grunt快速入门(大篇幅完整版)
    一些很棒的js代码
    如何高效的编写Verlog HDL——菜鸟版
    基于FPGA的肤色识别算法实现
  • 原文地址:https://www.cnblogs.com/BigIdiot/p/2281220.html
Copyright © 2011-2022 走看看