Java Socket长链接 异步读写 实例
来源:互联网 发布:抓包8888端口干嘛的 编辑:程序博客网 时间:2024/05/18 00:47
1.Server端
package com.xxx.internet.server;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;import com.xxx.internet.util.DataProcessUtil;/** * @ClassName SocketServer * @Description 发布一个Socket Server端服务 * @Author weizhi2018 * @Date 2013-8-11 下午10:50:39 * */public class SocketServerLong {public static void main(String[] args) {ServerSocket serverSocket = null;Socket socket = null;DataInputStream reader = null;DataOutputStream writer = null;String result;// 监听端口号int port = 8780;// 建立连接try {serverSocket = new ServerSocket(port);System.out.println("启动监听服务:" + port);socket = serverSocket.accept();System.out.println("建立连接,开始传输数据...");} catch (IOException e1) {e1.printStackTrace();}while (true) {try {// 接收客户端发送内容reader = new DataInputStream(socket.getInputStream());byte[] buff = new byte[1024];reader.read(buff);String recvStr = new String(buff, "UTF-8").trim();// 输出System.out.println("接收客户端请求内容为:" + recvStr);DataProcessUtil dataProcess = new DataProcessUtil(recvStr);result = dataProcess.dealParam();// 向客户端发送反馈内容writer = new DataOutputStream(socket.getOutputStream());System.out.println("服务端返回处理结果:" + result);byte[] bb = result.getBytes();writer.write(bb);writer.flush();} catch (Exception e) {e.printStackTrace();} finally {// 关闭输入输出流,关闭连接//try {//writer.close();//} catch (Exception e) {//e.printStackTrace();//}//try {//reader.close();//} catch (Exception e) {//e.printStackTrace();//}//try {//socket.close();//} catch (Exception e) {//e.printStackTrace();//}//System.out.println("服务结束,断开连接.");}}}}
2.Client 端
package com.xxx.internet.client;public class SocketMain {/** * @Title main * @Description 启动两个线程,一个用来定时发送数据,一个用来定时接收数据 * @Author weizhi2018 * @param @param args * @return void * @throws */public static void main(String[] args) {String ip = "127.0.0.1";int port = 8780;ConnSocket socket = null;socket = new ConnSocket(ip, port);System.out.println("IP:" + ip + ",端口:" + port + ",建立连接...");RecvThd recvThd = new RecvThd(socket);SendThd sendThd = new SendThd(socket);new Thread(sendThd).start();new Thread(recvThd).start();}}
3.发送数据的线程
package com.xxx.internet.client;public class SendThd implements Runnable {private ConnSocket socket = null;public SendThd(ConnSocket socket) {this.socket = socket;}/* * @see java.lang.Runnable#run() */@Overridepublic void run() {String sendData = "abcdefghijklmnopqrsguvwxyz1234567890';[]=-/,.~!@#$%^&*()_+<>?:";while (true) {System.out.println("-----");try {if (socket.getStatus()) {socket.send(sendData);System.out.println("发送数据:" + sendData);}Thread.sleep(3000);} catch (Exception e) {e.printStackTrace();}}}}
4.接收返回结果的线程
package com.xxx.internet.client;public class RecvThd implements Runnable {private ConnSocket socket = null;public RecvThd(ConnSocket socket) {this.socket = socket;}/* * @see java.lang.Runnable#run() */@Overridepublic void run() {while (true) {System.out.println("-----");try {String result = null;if (socket.getStatus()) {result = socket.recv();System.out.println("接收数据:" + result);}else {Thread.sleep(30);if (socket.getStatus()) {result = socket.recv();System.out.println("接收数据:" + result);}}Thread.sleep(3000);} catch (Exception e) {e.printStackTrace();}}}}
- Java Socket长链接 异步读写 实例
- Java Socket收发异步长连接
- Java socket 长连接与短链接
- java socket编程 长链接处理
- .net 中socket的异步长连接实例
- .net 中socket的异步长连接实例
- 经典java socket 长连接实例
- ios socket长链接
- Java Socket长连接异步单工保持心跳
- php socket实现长链接
- (java)socket全双工长连接通信实例
- java socket 长连接
- java Socket长连接
- java socket 长连接
- Java Socket长连接
- 关于Socket长连接异步单工
- SOCKET的短链接与长连接
- android 简单推送socket长链接
- HDU 4705 Y
- NoSQL的三大基石(CAP、BASE和最终一致性)
- linux和windows文件共享(vmtools)
- ExtJS简单登陆界面
- java编程心得(十七)——Java函数运行计时器
- Java Socket长链接 异步读写 实例
- 重述:JavaScript学习总结(二)
- c++ primer习题9.34, 9.35, 9.40
- 内核线程、轻量级进程、用户线程
- jar、war、ear三种文件的区别
- D - Palindrome Partitioning
- [Leap Motion开发系列]win32应用的环境配置[2013-11-2更新]
- 查看自己trace出来的文件路径
- 黑马程序员——IO File类,Properties,打印流 ,合并流