首页 > 代码库 > Socket编程半双工
Socket编程半双工
服务器
package com.test;import java.io.IOException;import java.net.*;import java.io.*;public class MyServer { public static void main(String[] args) { // TODO Auto-generated method stub MyServer ms = new MyServer(); } public MyServer(){ try { //服务器用ServerSocket对象创建 参数代表的是在9999端口上监听 System.out.println("服务器在9999端口等待监听..."); ServerSocket ss = new ServerSocket(9999); //等待监听 accept() 方法返回的是Socket对象 Socket s = ss.accept(); //接收客户端输入的数据 InputStreamReader isr =new InputStreamReader(s.getInputStream()); BufferedReader br = new BufferedReader(isr); //接收控制台输入的数据 InputStreamReader isr2 =new InputStreamReader(System.in); BufferedReader br2 = new BufferedReader(isr2); //想客户端写入输出流 PrintWriter pw = new PrintWriter(s.getOutputStream(),true); while(true){ String infoFromClient = br.readLine(); if(infoFromClient.equals("exit")) { System.out.println("结束对话!"); s.close(); break; } System.out.println("客户端说:"+infoFromClient); System.out.println("请输入您想对客户端说的话:"); String info = br2.readLine(); pw.println(info); } } catch (IOException e) { e.printStackTrace(); } }}
客户端
package com.test;import java.net.*;import java.io.*;public class MyClient { public static void main(String[] args) { // TODO Auto-generated method stub MyClient mc = new MyClient(); } public MyClient(){ try { //创建客户端连接通道对象 第一个参数表示连接服务器的ip 第2个参数表示连接哪个端口 Socket s = new Socket("127.0.0.1",9999); //向服务器发送数据 创建写对象 向通道对象的输出流写入数据 true代表及时刷新数据 PrintWriter pw = new PrintWriter(s.getOutputStream(),true); //创建一个输入流 接收从控制台输入的数据 InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); InputStreamReader isr2 = new InputStreamReader(s.getInputStream()); BufferedReader br2 = new BufferedReader(isr2); while(true){ System.out.println("请输入您想对服务器说的话:"); String infoFromControl = br.readLine(); pw.println(infoFromControl); if(infoFromControl.equals("exit")) { System.out.println("对话结束!"); s.close(); break; } String info = br2.readLine(); System.out.println("服务器说:"+info); } } catch (Exception e) { e.printStackTrace(); } }}
需要注意的地方是,当退出对话判断客户端判断要在想服务端发送数据后判断 不然 服务器没接收到 客户端就关闭了 在这里从两个地方读取数据流 一个是s通道 另一个从控制台读取数据流
Socket编程半双工
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。