`
chen_yongkai
  • 浏览: 61180 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

基于Socket长连接多线程传输数据的简单示例

阅读更多
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		ServerSocket socketServer = new ServerSocket(9090);
		while (true) {
			Socket socket = socketServer.accept();
			InputStream in = socket.getInputStream();
			byte[] b = new byte[7];
			int len;
			try {
				while ((len = in.read(b)) != -1) {
					String value = new String(b, 0, len);
					double d=Double.parseDouble(value);
					//process data
					System.out.println(d);
				}
			} catch (Exception ex) {
				//handle exception
				ex.printStackTrace();
			}
		}
	}

}



import java.io.OutputStream;
import java.net.Socket;

public class Client {
	static class SendThread extends Thread {
		Socket server;
		byte[] value;

		public SendThread(Socket server, String value) {
			super();
			this.server = server;
			this.value = value.getBytes();
		}

		public void run() {
			while (true) {
				try {
					OutputStream out = server.getOutputStream();
					out.write(value);
					out.flush();
					Thread.sleep(1000);
				} catch (Exception ex) {
					return;
				}
			}
		}
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		Socket server = new Socket("localhost", 9090);
		SendThread t1 = new SendThread(server, "1111.11");
		SendThread t2 = new SendThread(server, "2222.22");
		SendThread t3 = new SendThread(server, "3333.33");
		t1.start();
		t2.start();
		t3.start();
	}

}
1
5
分享到:
评论
4 楼 xhpscdx 2016-08-28  
兄弟,你这个算长连接应用吗?不关闭stream,不关闭socket,就算长连接吗?
3 楼 贝爷粉丝团 2015-04-01  
davidchouwolf 写道
也碰到一个类似的应用,需要长连接,客户端大约是两三千个,那么服务端开的线程岂不是也要两三千个?这样到后面线程跑多了,效率就越来越低了,有什么好的解决方式吗?

是不是要用线程池?
2 楼 davidchouwolf 2012-11-08  
也碰到一个类似的应用,需要长连接,客户端大约是两三千个,那么服务端开的线程岂不是也要两三千个?这样到后面线程跑多了,效率就越来越低了,有什么好的解决方式吗?
1 楼 季铵盐 2012-08-06  

相关推荐

    Java基于Socket实现简单的多线程回显服务器功能示例

    主要介绍了Java基于Socket实现简单的多线程回显服务器功能,结合实例形式分析了java使用socket进行多线程数据传输的相关操作技巧,需要的朋友可以参考下

    聊天室小程序示例socket

    聊天室小程序示例,用到了socket编程,xml格式传输,多线程

    C语言编写基于TCP和UDP协议的Socket通信程序示例

    主要介绍了C语言编写基于TCP和UDP协议的Socket通信程序示例,其中TCP的客户端与服务器端采用多线程实现,需要的朋友可以参考下

    qt socket/modbus 简单又好用的交互库 以及与PLC 多地址交互示例以及信息统计 附加软件最小化到托盘

    1. Qt Modbus库提供了易于使用的API,使开发者可以快速而方便地实现...qt socket/modbus 简单又好用的交互库 以及与RTU、PLC 多地址交互示例以及信息统计 附加软件最小化到托盘,增加客户数据传输的实时性以及准确性

    linux网络编程

    网络字节序 字节序转换函数 地址转换函数 套接字类型 07socket编程(二) TCP客户/服务器模型 回射客户/服务器 socket、bind、listen、accept、connect 08socket编程(三) SO_REUSEADDR 处理多客户连接(process-...

    2018年C++教程网的linux网络编程视频共41集百度云下载链接.rar

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send readline...

    Delphi深度编程技术

    2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件...

    WinMM网络通讯中间件及其编程接口

    网络连接是操作网络所必需的过程,WinMM简化了连接建立和数据传输的处理过程,应用可以使用WinMM接口函数直接建立适合的连接通道,而无需参考Socket的一些特殊编程和数据收发的处理。 WinMM采用数据队列的形式缓冲...

    网络编程教程,很好的一本写linux网络编程书,这是我上传的源码

     15.3.3 多进程的并发服务器和多线程的并发服务器  15.3.4 客户端进程的多线程化  本章小结 第十六章 网络售票系统的简单模拟  16.1 系统的总体设计  16.1.1 应用的说明  16.1.2 数据格式的...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    2.5 进程的优先级别 2.5.1 进程的优先级类 2.5.2 相对优先级 2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件...

    socket.rar

    C#编写的客户端和服务端的windows示例程序。利用多线程技术异步TCP传输。可以作为socket测试工具,或进一步开发应用程序。程序可靠,测试通过。

    C# Socket编程实现简单的局域网聊天器的示例代码

    最近在学习C# Socket相关的知识,学习之余,动手做了一个简单的局域网聊天器。有萌生做这个的想法,主要是由于之前家里两台电脑之间想要传输文件十分麻烦,需要借助QQ,微信或者其他第三方应用,基本都要登录,而且...

    C++教程网《Linux网络编程》视频百度云地址

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send ...

    Linux网络编程 视频 教程

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send ...

    C++教程网视频:linux网络编程

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send ...

    c++教程网的linux网络编程视频下载

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send ...

    [免费]2018年C++教程网的linux网络编程视频百度云下载链接.rar

    处理多客户连接(process-per-conection) 点对点聊天程序实现 09socket编程(四) 流协议与粘包 粘包产生的原因 粘包处理方案 readn writen 回射客户/服务器 10socket编程(五) read、write与recv、send ...

    linux programming instances网络编程教程 附源代码

    4.9 socket编程client/server应用简单示例 4.9.1 一个简单www浏览器 4.9.2 inetd编程 4.9.3 获取本地ip 4.9.4 dns的使用 4.9.5 从socket中读出一行语句 4.9.6 处理用户登录及权限设置 4.10 本章小结 ...

    Windows Sockets网络编程 可能是最清晰版本(Windows Sockets 2规范解释小组负责人亲自执笔。)总共4个包,part1

    4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 ...

    Windows Sockets网络编程 总计4个包,part2

    4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 ...

Global site tag (gtag.js) - Google Analytics