博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
客户端与服务器通信(版本3)
阅读量:3965 次
发布时间:2019-05-24

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

缺点不能连续发和连续接受,只能先客户端发,再服务器发,再客户端发这样循环,而不能客户端发,客户端再发,这样程序会出现阻塞

客户端

//服务端可以不断的发送信息给客户端  也可以不断的接受客户端的信息//一个客户端   一个服务器public class Client03 {
static Scanner sc = new Scanner(System.in); public static void main(String[] args) {
//创建客户端套接字 用户交互服务器 try {
//这行代码放进while里面就会创建多个客户端 Socket socket = new Socket("127.0.0.1", 8003); //根据套接字获取输出流 把信息从内存拿出来就是输出 写进内存就是输入 while (true) {
TimeUnit.SECONDS.sleep(1); OutputStream outputStream = socket.getOutputStream(); //将字节输出流包装成数据字节输出 DataOutputStream dataOutputStream = new DataOutputStream(outputStream); dataOutputStream.flush(); //这行代码的确定缺点 程序会阻塞在这里等待输入 dataOutputStream.writeUTF("客户端说:"+sc.next()); //获取服务端发过来的消息 DataInputStream dataInputStream = new DataInputStream(socket.getInputStream()); String s = dataInputStream.readUTF(); System.out.println(s); } } catch (IOException e) {
e.printStackTrace(); } catch (InterruptedException e) {
e.printStackTrace(); } }}

服务器

//服务端可以不断的发送信息给客户端  也可以不断的接受客户端的信息//一个客户端   一个服务器public class Server03 {
static Scanner sc = new Scanner(System.in); public static void main(String[] args) {
//创建服务端套接字ServerSocket 并指定端口号 try {
ServerSocket serverSocket = new ServerSocket(8003); //通过服务端套接字 监听客户端的连接 如果没有客户端连接 程序会停留在此处 Socket socket = serverSocket.accept();//返回的就是客户端的套接字 获取一个连接 while(true) {
TimeUnit.SECONDS.sleep(1); //根据客户端套接字 获取对应的输入流 InputStream inputStream = socket.getInputStream(); //将字节输入流包装成 数据字节流 DataInputStream dataInputStream = new DataInputStream(inputStream); String s = dataInputStream.readUTF(); System.out.println(s); //服务端继续给客户端发送消息 这里使用socket 而不是serverSocket 是因为服务端只有一个 客户端有很多个 给指定客户端发信息 DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream()); //这行代码的确定缺点 程序会阻塞在这里等待输入 所以不能实现连续发 dataOutputStream.writeUTF("服务端说:"+sc.next()); dataOutputStream.flush(); } } catch (IOException e) {
e.printStackTrace(); } catch (InterruptedException e) {
e.printStackTrace(); } finally {
} }}

转载地址:http://xmhzi.baihongyu.com/

你可能感兴趣的文章
sql jsp
查看>>
spring beans beanfactory applicationcontext
查看>>
使用ORM工具进行数据访问
查看>>
使用ORM工具进行数据访问
查看>>
编译与部署Eclipse+Tomcat+MySQL+Liferay4.1.2
查看>>
POJ3728,The merchant(倍增LCA+分治)
查看>>
2019 ICPC Malaysia National,E. Optimal Slots(01背包变形)
查看>>
洛谷P1638 逛画展(双向队列)
查看>>
POJ2892,Tunnel Warfare(线段树维护连续区间)
查看>>
POJ3468,A Simple Problem with Integers(线段树-区间查询-区间更新)
查看>>
杭电ACM——6463(思维)
查看>>
杭电ACM——2069,Coin Change(DP)
查看>>
杭电ACM——2110,Crisis of HDU(母函数)
查看>>
杭电AM——2152,Fruit(母函数)
查看>>
杭电ACM——2566,统计硬币(DP)
查看>>
堆栈(数据结构)
查看>>
队列(数据结构)
查看>>
Mule ESB-Content-Based Routing Tutorial(1)
查看>>
Mule ESB-Content-Based Routing Tutorial(2)
查看>>
Mule ESB-Content-Based Routing Tutorial(3)
查看>>