Java Socket 编程实验总结

Client:

1.使用Socket类  

if (socket == null)
socket = new Socket(address, 2333);
//不要用1024之前的端口

2.socket通过对其中的outputstream和inputstream操作实现通讯

  if (writer == null)
        writer = new PrintWriter(socket.getOutputStream());
  writer.println(toSend);
  writer.flush();//一定要记得flush刷新
 
 BufferedReader reader = new BufferedReader(new     InputStreamReader(socket.getInputStream()));
                    while(!socket.isClosed()) {
                        sleep(100);
                        String line = reader.readLine();
                        if(line!=null){
                            textArea.append(line + "\n");
                        }
                    }
                    reader.close();    

3.修改JFrame默认关闭窗口事件

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                super.windowClosing(e);
                try {
                    if (socket != null) {
                        socket.close();
                    }
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                System.exit(0);
            }

        });

 

Server:

1.使用ServerSocket

  serverSocket = new ServerSocket(2333);

2.广播实现

  socketList = new ArrayList<Socket>();
        try {

            serverSocket = new ServerSocket(2333);
            while (true) {
                Socket socket = serverSocket.accept();
                if(!socketList.contains(socket)){
                    socketList.add(socket);
                    new SocketThread(socket);
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

3.使用多线程

 BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                while (socket.isClosed() == false) {
                    sleep(100);
                    String line = reader.readLine();
                    if (line != null) {
                        for (int i = 0; i < socketList.size(); i++) {
                            Socket iter = (Socket) socketList.get(i);
                            PrintWriter writer = new PrintWriter(iter.getOutputStream());
                            System.out.println(line);
                            writer.println(line);
                            writer.flush();
                        }
                    }
                }
                socketList.remove(socket);

 

 

在室友电脑上初次运行客户端时无法访问到我的服务器,把我的Server打成jar包后运行把防火墙取消后成功完成了通讯!

转载于:https://www.cnblogs.com/Run-dream/p/4472810.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值