博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Socket通信编程
阅读量:6969 次
发布时间:2019-06-27

本文共 2861 字,大约阅读时间需要 9 分钟。

hot3.png

A程序和B程序之间互发消息,其实AB程序每个都是两个线程的,一个线程用于监听(接收消息),一个程序用于访问端口(发送消息),详情参见代码,如果觉得对你有帮助,麻烦点个赞,欢迎讨论交流

项目地址:

Server

package com.changgx;/** * Created by Administrator on 2016/12/6. */import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.ServerSocket;import java.net.Socket;/** * 服务端 */public class Server extends Thread {    /**     * 监听端口     */    private int port;    public Server(int port) {        this.port=port;    }    @Override    public void run() {        try {            //设置监听端口            ServerSocket server = new ServerSocket(port);            //开始监听端口,没有连接,那么该方法会阻塞            Socket socket = server.accept();            //获取信息            BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));            String line = null;            while (!"quit".equalsIgnoreCase(line = br.readLine())) {                System.out.println("ta :" + line);            }            socket.close();            server.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) {        Thread server = new Server(10000);        Thread client = new Client("localhost",10001);        server.start();        client.start();    }}

Client

package com.changgx;/** * Created by Administrator on 2016/12/6. */import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;/** * 客户端 */public class Client extends Thread {    /**     * 请求的host地址     */    private String host;    /**     * 请求的端口     */    private int port;    public Client(String host, int port) {        this.host = host;        this.port = port;    }    @Override    public void run() {        try {            //获取键盘输入            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));            //readline() 会一直等待键盘输入,只有输入后才会去创建socket连接            //如果先创建socket,会导致运行mian方法的时候,对方的server还没有启动,这边就去请求,会报错            //所以使用readline()来阻塞            String line = input.readLine();            //创建socket连接            Socket socket = new Socket(host, port);            PrintWriter pw = new PrintWriter(socket.getOutputStream());            //输入quit,退出客户端            while (!"quit".equalsIgnoreCase(line)) {                pw.println(line);                pw.flush();                line = input.readLine();            }            pw.println(line);            pw.close();            input.close();            socket.close();        } catch (IOException e) {            e.printStackTrace();        }    }    public static void main(String[] args) throws Exception {        Thread server = new Server(10001);        Thread client = new Client("localhost",10000);        server.start();        client.start();    }}

转载于:https://my.oschina.net/changgx/blog/801317

你可能感兴趣的文章
Python3.x 操作Mongodb
查看>>
Zookeeper集群搭建(简单)(29)
查看>>
初识Comet技术
查看>>
linux tar命令简介
查看>>
利用nginx内置ngx_http_mirror_module模块实现流量复制及流量放大
查看>>
Qt5和OpenGL一概述
查看>>
CKEditor4 自動清除內容標籤問題的解決方法
查看>>
统计出现频率最高的十个单词的程序性能分析
查看>>
在ubuntu linux下以编译方式安装LAMP(apache mysql php)环境
查看>>
CentOS 7 中配置通过 daemon 模式启动的 Tomcat 8 服务
查看>>
Linux下限制本机网卡带宽的方法
查看>>
Linux下MySQL数据库常用基本操作
查看>>
greenplum presto impala选型与测评
查看>>
Ubuntu 17.10 +Nginx +Mysql +PHP 环境搭建
查看>>
如何让自己的Asp.Net程序运行在免费的云计算空间OpenShift上面
查看>>
OC基础第一天
查看>>
Git clone远程分支
查看>>
PHP5.3.20配置后发生未知 FastCGI 错误 错误代码 0x800736b1解决办法
查看>>
SELECT可输入可选的实现方法
查看>>
隐藏列tableoid
查看>>