- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.Reader;
- import java.net.Socket;
- import java.net.UnknownHostException;
- import java.nio.CharBuffer;
- import java.util.concurrent.ArrayBlockingQueue;
- import java.util.concurrent.BlockingQueue;
- /*{ user:jiangwh }*/
- public class SocketClient {
- public static final Object locked = new Object();
- public static final BlockingQueue<String> queue = new ArrayBlockingQueue<String>(
- 1024 * 100);
- class SendThread extends Thread{
- private Socket socket;
- public SendThread(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- while(true){
- try {
- String send = getSend();
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
- pw.write(send);
- pw.flush();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- public String getSend() throws InterruptedException{
- Thread.sleep(1000);
- return "<SOAP-ENV:Envelope>"+System.currentTimeMillis()+"</SOAP-ENV:Envelope>";
- }
- }
- class ReceiveThread extends Thread{
- private Socket socket;
- public ReceiveThread(Socket socket) {
- this.socket = socket;
- }
- @Override
- public void run() {
- while(true){
- try {
- Reader reader = new InputStreamReader(socket.getInputStream());
- CharBuffer charBuffer = CharBuffer.allocate(8192);
- int index = -1;
- while((index=reader.read(charBuffer))!=-1){
- charBuffer.flip();
- System.out.println("client:"+charBuffer.toString());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- }
- public void start() throws UnknownHostException, IOException{
- Socket socket = new Socket("127.0.0.1",18889);
- new SendThread(socket).start();
- new ReceiveThread(socket).start();
- }
- public static void main(String[] args) throws UnknownHostException, IOException {
- new SocketClient().start();
- }
- }
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.io.Reader;
- import java.io.Writer;
- import java.net.ServerSocket;
- import java.net.Socket;
- import java.nio.CharBuffer;
- import java.util.Date;
- /*{user:jiangwh }*/
- public class SocketServer {
- private final static String SOAP_BEGIN = "<SOAP-ENV:Envelope";
- private final static String SOAP_END = "</SOAP-ENV:Envelope>";
- public static void main(String[] args) throws IOException {
- SocketServer socketServer = new SocketServer();
- socketServer.start();
- }
- public void start() throws IOException {
- ServerSocket serverSocket = new ServerSocket(18889);
- while (true) {
- Socket socket = serverSocket.accept();
- new SocketThread(socket).start();
- }
- }
- class SocketThread extends Thread {
- private Socket socket;
- private String temp;
- public Socket getSocket() {
- return socket;
- }
- public void setSocket(Socket socket) {
- this.socket = socket;
- }
- public SocketThread(Socket socket) {
- this.socket = socket;
- }
- public void run() {
- try {
- Reader reader = new InputStreamReader(socket.getInputStream());
- Writer writer = new PrintWriter(new OutputStreamWriter(socket
- .getOutputStream(), "GBK"));
- CharBuffer charBuffer = CharBuffer.allocate(8192);
- int readIndex = -1;
- while ((readIndex = reader.read(charBuffer)) != -1) {
- charBuffer.flip();
- temp += charBuffer.toString();
- if (temp.indexOf(SOAP_BEGIN) != -1
- && temp.indexOf(SOAP_END) != -1) {
- // 传送一个soap报文
- System.out.println(new Date().toLocaleString()+"server:"+temp);
- temp="";
- writer.write("receive the soap message");
- writer.flush();
- } else if (temp.indexOf(SOAP_BEGIN) != -1) {
- // 包含开始,但不包含
- temp = temp.substring(temp.indexOf(SOAP_BEGIN));
- }
- if (temp.length() > 1024 * 16) {
- break;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (socket != null) {
- if (!socket.isClosed()) {
- try {
- socket.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- }
- }
转载自:http://blog.csdn.net/liuzesoft/article/details/30247649
相关推荐
以上就是Android中使用TCP Socket客户端进行数据收发的基本流程。在实际项目中,你可能需要根据业务需求对代码进行优化,比如添加超时设置、数据编码解码等。同时,为了提高应用的健壮性,还要考虑网络状态变化、...
总的来说,`.NET`和`Java`之间的Socket通信涉及到网络编程的基础知识,包括套接字的创建、连接、数据传输以及多线程或异步处理。这种跨平台的通信方式在分布式系统、物联网应用以及任何需要两个或更多应用程序之间...
优化点可能包括但不限于:提高并发连接处理能力,优化网络I/O模型(如使用异步非阻塞I/O),以及实现智能的数据包解析和转发策略。此外,实时监控终端和客户端的请求,可以及时发现并处理异常情况,确保通信的稳定性...
在Java中,`java.net.Socket`类代表TCP连接,而`java.net.DatagramSocket`则用于UDP通信。 - TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,保证数据的顺序和完整性;UDP(User Datagram...
在IT行业中,TCP/IP Socket长连接是网络编程中一个重要的概念,特别是在移动设备如安卓手机与服务器进行实时通信时。TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,而Socket是TCP/IP...
Java短信收发系统是一种基于Java编程语言开发的用于发送和接收短信的应用程序。这个系统通常包含客户端和服务端两部分,客户端用于用户交互,服务端则处理短信的发送和接收任务。在Java手机短信项目源码中,我们可以...
`CSR-Socket` 是一个专为提升性能而设计的Socket库,它利用了Windows操作系统中的IO完成端口(Input/Output Completion Port, IOCP)技术,以及高效的缓存队列策略,以实现高效的异步收发操作。 **一、IO完成端口...
TCP Socket服务端,支持多个客户端连接,MFC多线程异步收发,防阻塞; 收到客户端报文自动回码确认; 支持服务端向选中客户端发数据,进行测试; 支持记录报文log,可以长时间测试HJ212设备。 支持自己编辑QN=XX~...
流式Socket基于TCP协议,提供面向连接、可靠的字节流服务;数据报Socket基于UDP协议,提供无连接、不可靠的服务。 #### 二、Socket编程实现电子邮件发送的步骤 1. **服务器端设置**: - 创建服务器Socket,绑定到...
2. Java Socket编程:用于创建客户端和服务器端的连接,实现数据的双向传输。Java的Socket和ServerSocket类是网络通信的核心。 二、消息协议 1. SMS(Short Message Service):短信服务是最初的基础,平台可能需要...
4. **数据收发**:连接建立后,可以使用`send()`或`write()`函数发送数据,使用`recv()`或`read()`函数接收数据。UDP客户端同样使用`sendto()`和`recvfrom()`函数发送和接收数据。 5. **关闭Socket**:完成通信后,...
- `手机短信开发java.txt` 概括了Java进行手机短信开发的基本流程,这可能包括使用Java的Socket编程或者特定的库(如SMPP库)来直接与短信网关进行通信。开发过程中,需要熟悉SMPP协议(Short Message Peer-to-Peer...
1. Android应用中,同样需要引用java.net命名空间,使用java.net.Socket类建立客户端。 2. 创建Socket对象,指定服务器的IP地址和端口号。 3. 使用connect方法建立到服务器的连接。 4. 获取输入流和输出流对象,通常...
6. **线程池**:在高并发场景下,如何利用线程池管理多个并发的异步Socket连接,提高系统资源利用率。 7. **关闭与清理**:正确地关闭Socket连接和清理资源,避免内存泄漏和资源浪费。 通过研究这个异步Socket编程...
Java UDP(用户数据报协议)双向收发是网络编程中的一个重要概念,主要涉及网络通信的基础知识和Java的Socket编程。UDP是一种无连接的、不可靠的传输层协议,与TCP相比,它更轻量级,适合实时性要求高的应用,如视频...
当客户端连接时,创建一个Socket来处理这个连接,并通过这个Socket与客户端交换数据。 7. **Android源码分析**: 压缩包中的源码项目可能包含了以下组件: - `MainActivity`:启动Socket通信的Activity,可能包含...
在Android中,我们可以使用Java的Socket类来实现这一功能,该类位于java.net包下。 服务器端开发: 1. 创建ServerSocket实例,指定监听的端口号。例如: ```java ServerSocket serverSocket = new ServerSocket...
3. **强大的心跳机制**:内置了高效的心跳检测机制,能有效防止网络连接长时间无数据传输导致的连接断开,保证了服务的稳定性和可靠性。 4. **线程池管理**:通过自定义线程池,实现了对系统资源的精细化管理,避免...
首先,Socket+IO+模型.doc可能是一个文档,详细解释了Socket的输入/输出模型,如阻塞型、非阻塞型、I/O复用(如select、poll、epoll)和异步非阻塞模型。这些模型在处理大量并发连接时尤其重要,帮助开发者设计出...
Socket聊天是一种基于网络通信的实现方式,主要使用Java的Socket类进行编程。在这个场景下,我们通常构建一个服务器端(Server)和多个客户端(Client),允许客户端之间或客户端与服务器之间进行实时的数据交换,...