`
chen_yongkai
  • 浏览: 61962 次
  • 性别: 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  

相关推荐

    VC socket多线程文件传输

    综上所述,VC Socket多线程文件传输涉及到网络编程基础、多线程技术、数据同步、错误处理以及性能优化等多个层面的知识,对提升网络应用的性能和用户体验具有重要意义。在实践中,开发者需要结合理论知识和具体案例...

    Socket长连接+心跳包+发送读取

    5. **并发处理**:在服务器端,可能需要处理多个客户端的连接,这就涉及到多线程或异步IO模型,如Java的Selector或NIO框架。 6. **错误处理**:包括网络异常、数据传输错误、资源释放等,确保程序的健壮性。 7. **...

    SOCKET实现多线程TCP连接源码

    标题提到的"SOCKET实现多线程TCP连接源码"是一个典型的网络编程示例,它演示了如何通过Socket接口处理多个并发客户端连接,并使用多线程来保持与每个客户端的独立通信。 首先,TCP(传输控制协议)是一种面向连接的...

    基于TCP/IP的Socket多线程通信(服务器和客户端)

    总的来说,基于TCP/IP的Socket多线程通信是实现高并发、高效网络服务的关键技术,它结合了TCP的可靠性与多线程的并发处理能力,是构建大规模网络应用的基础。理解和掌握这一技术,对于提升网络程序的设计和开发能力...

    Qt Socket 多线程代码实现

    初学者可以通过阅读这些代码,了解如何在Qt中设置多线程服务器,如何使用QTcpSocket进行通信,以及如何处理连接和数据传输。 总的来说,这个项目是一个很好的起点,它涵盖了Qt网络编程和多线程的基本概念,对于想...

    vcSocketfile.rar_VC文件传输_socket传输文件_socket文件传输_vc 多线程_多线程传输

    "vcSocketfile.rar_VC文件传输_socket传输文件_socket文件传输_vc 多线程_多线程传输"这个压缩包文件提供了使用VC++(Visual C++)实现的多线程Socket文件传输的示例代码。下面我们将详细探讨这个主题中的关键知识点...

    VS2017实现Tcp socket多线程通信(C++)

    TCP(传输控制协议)是一种面向连接、可靠的、基于字节流的通信协议,广泛应用于互联网上的各种服务。多线程技术则允许我们在一个应用程序中同时执行多个任务,提升效率和响应速度。以下内容将围绕标题和描述中的...

    java socket长连接客户端服务端(标准实例)

    本案例实现了基于TCP协议的Socket长连接,即客户端和服务端建立连接后,保持连接状态,进行多次数据交互而无需频繁建立和断开连接的过程。 #### 二、长连接的优点 1. **减少连接建立的时间**:由于TCP连接的建立...

    Java基于Socket文件传输示例

    Java基于Socket文件传输示例是一种常见的网络编程应用场景,主要用于实现两个网络节点间的文件共享和交换。Socket编程是Java网络通信的基础,它提供了低级别的、面向连接的、双向的数据传输通道。在这个示例中,我们...

    Socket长连接demo

    6. **并发处理**:在服务器端,为了处理多个客户端的连接请求,通常会采用多线程、多进程或者异步非阻塞I/O模型(如Reactor、Proactor模式)来实现并发。 在"Socket长连接demo"这个项目中,可能包含了上述步骤的...

    java socket 长连接实例

    "Java Socket 长连接实例"是关于如何实现一个持久连接的服务器和客户端程序的示例,这种连接能够保持开放,直到一方明确地关闭它。这在需要频繁通信或者需要长时间保持连接状态的应用场景中非常有用,比如聊天应用、...

    c# Socket 多线程 分包 发送/接受数据

    在Socket通信中,多线程可以用来分别处理接收和发送数据,或者处理多个客户端连接,避免因为单线程的阻塞导致整个程序的响应变慢。例如,一个线程负责接收数据,另一个线程负责处理接收到的数据并发送响应。 3. **...

    Delphi之TServerSocket和TClientSocket多线程传输

    在本文中,我们将深入探讨如何利用这两个组件进行多线程传输,以实现高效、稳定的数据交换。 首先,TServerSocket组件是构建在 Indy 或 Winsock 库上的,它允许你的Delphi应用成为一个网络服务器,能够监听来自多个...

    SOCKET+多线程例子

    本示例项目"SOCKET+多线程例子"旨在帮助初学者掌握这两个关键概念,以便于创建高效的网络通信应用。 首先,让我们深入理解Socket。Socket是网络通信中的一个接口,它允许两个运行在不同机器上的程序通过网络进行...

    socket linux c++ 多线程3

    描述中提到的资源包括多线程编程和Socket编程的教程,如"Thread_多线程.pdf"和"Socket编程.pdf",这些资料通常会涵盖线程的创建、管理和同步,以及Socket的创建、连接和通信过程。"VC多线程编程.CHM"可能包含有关在...

    socket 长连接实例

    - 对于高并发场景,服务器可能需要使用多线程或多进程模型来处理多个客户端的连接请求。 - 使用非阻塞I/O或者异步I/O模型,可以提高服务器的并发处理能力。 总的来说,`socketServer`和`socketClient`的示例涵盖...

    \\(^_^)/ Java 使用Socket多线程传输整个文件夹

    本篇文章将详细讲解如何利用Java的Socket和多线程技术来实现整个文件夹的传输。 首先,理解Socket通信的基本原理。Socket是网络通信中的端点,它允许两个程序通过网络连接进行数据交换。在Java中,`java.net.Socket...

    QT下多线程 UDP socket示例

    QT下多线程UDP Socket示例是一个典型的网络通信编程应用场景,它涉及到QT库中的网络模块,特别是关于UDP(用户数据报协议)的使用以及多线程技术。在本示例中,开发者创建了一个UDP服务器,该服务器能够在不影响主...

    使用TCPServer编写(多线程)socket服务

    以下是一个简单的Python TCPServer多线程示例: ```python import socket import threading class TCPThreadServer: def __init__(self, host='localhost', port=12345): self.server_socket = socket.socket...

Global site tag (gtag.js) - Google Analytics