900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java中Socket实现客户端和服务端通信(多线程实现全双工通信)

Java中Socket实现客户端和服务端通信(多线程实现全双工通信)

时间:2018-10-10 10:21:07

相关推荐

Java中Socket实现客户端和服务端通信(多线程实现全双工通信)

效果图

目录结构

服务端Server

package server;import thread.SocketReader;import thread.SocketWrite;import java.io.InputStream;import java.io.PrintWriter;import .ServerSocket;import .Socket;import java.util.Scanner;public class Server {public static void main(String[] args) throws Exception{PrintWriter out=null;Scanner get = null;ServerSocket server=new ServerSocket(8888);System.out.println("服务器正在运行,等待客户端连接!");while (true){Socket client=new Socket();client=server.accept();System.out.println(client.getInetAddress()+" 已成功连接到此台服务器上。");out = new PrintWriter(client.getOutputStream());get = new Scanner(client.getInputStream());new SocketWrite(out).start();new SocketReader(get).start();}}}

客户端Client

package client;import thread.SocketReader;import thread.SocketWrite;import java.io.PrintWriter;import .Socket;import java.util.Scanner;public class Client {public static void main(String[] args) throws Exception{PrintWriter out=null;Scanner get = null;Socket client=new Socket("127.0.0.1",8888);get = new Scanner(client.getInputStream());out = new PrintWriter(client.getOutputStream());new SocketReader(get).start();new SocketWrite(out).start();}}

写入消息SocketWriter

package thread;import java.io.PrintWriter;import java.util.Scanner;public class SocketWrite extends Thread{private Scanner scanner;private PrintWriter out;private Scanner get_key = null;public SocketWrite(PrintWriter out){this.out=out;}public void run(){out.println("已成功连接到远程服务器!");out.flush();//将缓冲流中的数据全部输出while(true){try{get_key = new Scanner(System.in);String msg=get_key .nextLine();out.println(msg);out.flush();// System.out.println("请输入消息:");}catch(Exception e){System.out.println("连接已断开!");return;}}}}

读取消息SocketReader

package thread;import java.io.ByteArrayOutputStream;import java.util.Scanner;public class SocketReader extends Thread{private Scanner get;public SocketReader(Scanner get){this.get=get;}public void run(){while(true){try{while(true){System.out.println("收到对端消息:"+get.nextLine());// System.out.print("输入消息:");}}catch(Exception e){System.out.println("连接已中断");return;}}}}

Socket实现客户端和服务端持续通信;

1.单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信,举例:电视,广播。

2.半双工数据传输允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;在同一时间只可以有一方接受或发送信息,可以实现双向通信。举例:对讲机。

3.全双工数据通信允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力;在同一时间可以同时接受和发送信息,实现双向通信,举例:电话通信。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。