Socket通信
来源:互联网 发布:淘宝上怎么收藏店铺 编辑:程序博客网 时间:2024/06/03 23:48
效果图
服务器代码
public class SocketServer { private BufferedReader reader = null;//用于读取客户端发来的消息 private BufferedWriter writer = null;//用于发送消息 private BufferedReader inputReader = null;//用于输入消息 public static void main(String[] args) { SocketServer server = new SocketServer(); server.start(); } private void start() { Socket socket = null; ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(9898); System.out.println("服务器已开启,等待客户端连入"); while(true){ socket = serverSocket.accept(); manageConnect(socket); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputReader.close(); reader.close(); writer.close(); serverSocket.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } // 管理连接 public void manageConnect(final Socket socket) { new Thread(new Runnable() { @Override public void run() { try { writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); inputReader = new BufferedReader(new InputStreamReader( System.in)); System.out.println("客户端:"+socket.hashCode()+"已连入"); reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); startClientReplyListener(reader,socket); String serverMsg; // 发送消息 while (!(serverMsg = inputReader.readLine()).equals("结束聊天")) { writer.write(serverMsg + "\n"); writer.flush(); } } catch (IOException e) { e.printStackTrace(); } } }).start(); } // 监听客户端是否给服务器发送消息 public void startClientReplyListener(final BufferedReader reader,final Socket socket) { new Thread(new Runnable() { @Override public void run() { String receiveMsg; try { while ((receiveMsg = reader.readLine()) != null) { System.out.println(socket.hashCode()+":" + receiveMsg); } } catch (IOException e) { e.printStackTrace(); } } }).start(); }}
客户端代码
public class SocketClient { public static void main(String[] args) { SocketClient client = new SocketClient(); client.start(); } private void start() { BufferedReader inputReader = null;// 用于输入消息 BufferedReader reader = null;// 用于读取客户端发来的消息 BufferedWriter writer = null;// 用于发送消息 Socket socket = null; try { socket = new Socket("127.0.0.1", 9898); writer = new BufferedWriter(new OutputStreamWriter( socket.getOutputStream())); inputReader = new BufferedReader(new InputStreamReader(System.in)); reader = new BufferedReader(new InputStreamReader( socket.getInputStream())); startServerReplyListener(reader); String clientMsg; // 发送消息 while (!(clientMsg = inputReader.readLine()).equals("结束聊天")) { writer.write(clientMsg + "\n"); writer.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { try { inputReader.close(); writer.close(); socket.close(); } catch (Exception e) { e.printStackTrace(); } } } // 监听服务器是否给客户端发送消息 public void startServerReplyListener(final BufferedReader reader) { new Thread(new Runnable() { @Override public void run() { String serverMsg; try { // 接收消息 while ((serverMsg = reader.readLine()) != null) { System.out.println("服务器:" + serverMsg); } } catch (Exception e) { e.printStackTrace(); } } }).start(); }}
0 0
- Socket通信
- Socket通信
- socket通信
- Socket通信
- Socket通信
- socket通信
- socket通信
- socket通信
- socket 通信
- socket通信
- SOCKET通信
- Socket通信
- 通信 socket
- socket 通信
- socket通信
- socket通信
- socket通信
- socket通信
- 教程:如何为Android写一个PhoneGap插件
- To free pagecache
- 如何在webview中加载本地包含图片的html文件?
- 云平台简介
- 我们需要什么样的开发人员
- Socket通信
- hdu1180 诡异的楼梯
- HDU 2177 取(2堆)石子游戏 Wythoff Game 求第一步方案
- 利用Scala语言开发Spark应用程序
- 兔子--动态设置控件的宽高
- 条款03:尽可能使用const
- android 获取手机SD卡和手机的内部存储
- LVS学习笔记 3LVS-DR实验 初步试验
- Javascript学习