永发信息网

用java客户端,服务端实现互聊工具,在局域网内

答案:2  悬赏:30  手机版
解决时间 2021-01-23 15:36
我要源代码,谢谢
最佳答案
//服务端程序:
import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        new TCPServer().init();
    }
    @SuppressWarnings("static-access")
    private void init() throws IOException{
        @SuppressWarnings("resource")
        ServerSocket server = new ServerSocket(1000);
        Socket client = null;
        while(true){
            try {
                client = server.accept();
                BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
                byte[] b = new byte[1024];
                int len = 0;
                String message = "";
                while((len=bis.read(b))!=-1){
                    message = new String(b,0,len);
                    System.out.print("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:" + message);
                    if("byte".equals(message.trim()))
                        client.close();
                    PrintWriter pw = new PrintWriter(client.getOutputStream(),true);
                    pw.println(message);
                }
            } catch (Exception e) {
                System.err.println("客户端:"+client.getInetAddress().getLocalHost().getHostAddress()+" 已断开连接!");
            }
        }
    }
}

//客户端程序:
import java.io.*;
import java.net.Socket;

public class TCPClient implements Runnable{
    public static void main(String[] args) throws IOException {
        new TCPClient().init();
    }
    private void init() throws IOException{
        @SuppressWarnings("resource")
        final Socket client = new Socket("127.0.0.1",1000);
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String send = "";
        while(true){
            send = in.readLine();
            PrintWriter out = new PrintWriter(client.getOutputStream(),true);
            if(!"byte".equals(send.trim()))
                out.println(send);
            else{
                out.println(send);
                System.exit(0);
            }
            new Thread(new TCPClient(){
                @SuppressWarnings("static-access")
                public void run(){
                    try {
                        BufferedInputStream bis = new BufferedInputStream(client.getInputStream());
                        byte[] b = new byte[1024];
                        int len = 0;
                        while((len=bis.read(b))!=-1){
                            System.out.println("服务器:" +client.getInetAddress().getLocalHost().getHostAddress()+"发来消息:"+new String(b,0,len).trim());
                        }
                    } catch (IOException e) {
                        System.err.println("连接服务器失败!");
                    }
                }
            }).start();
        }
    }
    public void run() {}
}//服务器测试结果:
客户端:192.168.0.200发来消息:001 byte
客户端:192.168.0.200发来消息:byte
客户端:192.168.0.200 已断开连接!
客户端:192.168.0.200发来消息:adasd
客户端:192.168.0.200 已断开连接!
//客户端测试结果:
---001号客户端--
001 byte
服务器:192.168.0.200发来消息:001 byte
byte //001礼貌说跟服务器说byte
---002号客户端--
adasd //002客户端直接关闭程序
服务器:192.168.0.200发来消息:adasd
全部回答
既然有服务器 为什么要扫描呢 直接让客户端连接服务器端不就可以了吗
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
千姿花店(城市表情鲜花)地址好找么,我有些事
某同学在探究“物体的质量跟体积的关系”的实
谁能借我一个穿越火线手游有英雄级武器的号啊
花千束品牌鲜花馆(南门外苏果超市店)地址在哪
Do you know the man who on the road just n
---Isdinnerready?---Notyet.Themaincourse__
---Volunteering is becoming popular in Chi
玫瑰之约(鲜花店)地址在什么地方,我要处理点
电话销售怎么寻找客户的电话号码 5分
宝仔屋和平宠物医院地址在哪,我要去那里办事
宝仔屋和平宠物医院NO.70怎么去啊,我要去那
食堂的洗碗池一定要做热水吗?
某同学制作了如图所示的简易电解水装置进行家
唯美鲜花(湖滨路店)地址在什么地方,我要处理
染色体、基因、DNA为细胞核内的三种物质,由
推荐资讯
乐博机器人培训学校地址好找么,我有些事要过
活色生香乐颜什么时候知道谁救了她的真像
泉州大长江丰田地址在哪,我要去那里办事
女生对自己喜欢的男生是不是特别有激情
动物营养与饲料科学专业可以报考什么
thank you broke my heart,好像有一句的中文
失业保险交满5年了,现在买断失业保险能领到
莱阳市烟草专卖局怎么去啊,我要去那办事
霞飞游戏厅地址好找么,我有些事要过去
阅读下文,完成第15—18题。(16分)珍珠鸟冯骥
学姐我喜欢你 藏头诗
养生保健地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?