Java Scoket实现双向通信代码详解

网友投稿 378 2022-12-03


Java Scoket实现双向通信代码详解

你好我是辰兮,很高兴你能来阅读,本篇总结了java Scoket类的相关知识,并且整理了实现双向通信的相关代码也有案例实现截图,分享获取新知,大家一起进步。

一、网络通信

网络通信,在网络中程序(发送者)与程序(接受者)之间的数据交互。

通信要素①ip + 端口号 ②传输协议

java.net包: 包含了Java用于网络通信所需的类。

ServerSocket类,用于表示网络服务

创建网络服务(创建ServerSocket对象)

//构造器

public ServerSocket(int port)

//创建网络服务

ServerSocket server = new ServerSocket(9999);

接收网络请求

//接收网络请求的方法

public Socket accept()

//网络服务接收请求(阻塞)

Socket socket = server.accept();

Socket类,网络套接字,表示网络连接

发送网络请求

//构造器

public Socket(String ip, int port)

//获取网络连接中的输入流

public InputStream getInputStream()

//获取网络连接中的输出流

public OuputStream getOutputStream()

二、接受者(Receiver)

代码实现如下:信息的接受者

public class Receiver {

public static void main(String[] args) {

try {

ServerSocket server = new ServerSocket(8888);

Socket socket = server.accept();

System.out.println("----程序已经连接++++");

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

PrintWriter pw = new PrintWriter(os);

Runnable r1 = new Runnable() {

@Override

public void run() {

while (true) {

// 接受信息

String str;

try {

str = br.readLine();

System.out.println("sender的信息" + str);

jAqUANw } catch (IOException e) {

e.printStackTrace();

}

}

}

};

Runnable r2 = new Runnable() {

@Override

public void run() {

// 返回信息

while (true) {

Scanner scan = new Scanner(System.in);

String msg = scan.nextLine();

pw.println(msg);

pw.flush();

}

}

};

Thread t1 = new Thread(r1);

Thread t2 = new Thread(r2);

t1.start();

t2.start();

} catch (IOException e) {

e.printStackTrace();

}

}

}

三、发送者(Sender)

代码实现如下:信息的发送者

public class Sender {

public static void main(String[] args) {

try {

Socket socket = new Socket("192.168.1.6", 8888);

InputStream is = socket.getInputStream();

OutputStream os = socket.getOutputStream();

InputStreamReader isr = new InputStreamReader(is);

BufferedReader br = new BufferedReader(isr);

PrintWriter pw = new PrintWriter(os);

Runnable r = new Runnable() {

@Override

public void run() {

while (true) {

// 发送信息

try {

Scanner scan = new Scanner(System.in);

String msg = scan.nextLine();

pw.println(msg);

pw.flush();

http:// } catch (Exception e) {

}

}

}

};

Runnable r2 = new Runnable() {

@Override

public void run() {

// 接受发送的信息

while (true) {

String str;

try {

str = br.readLine();

System.out.println("接受者receiver:" + str);

} catch (IOException e) {

e.printStackTrace();

}

}

}

};

Thread t1 jAqUANw= new Thread(r);

Thread t2 = new Thread(r2);

t1.start();

t2.start();

} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

}

四、案例截图

首先看到开启Receiver,然后开启Sender

开启Sender后----看到Receiver控制台显示连接成功

Sender发送信息

Receiver接受到信息,然后回复

点开Sender控制台,看到回复的信息然后继续回复

双向沟通交流实现


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Servlet+JDBC实现登陆功能的小例子(带验证码)
下一篇:Springboot项目基于Devtools实现热部署步骤详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~