最近做了一个测试,写了一个简单的socket长连接的测试例子,下面是代码
SocketServer.java
package socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; public class SocketServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket=new ServerSocket(1111); Socket socket=serverSocket.accept(); while(true){//保持长连接 try { Thread.sleep(3000);//等待时间 } catch (InterruptedException e1) { e1.printStackTrace(); } if (socket !=null){ InputStream is = null; OutputStream os = null; try { String ip = socket.getInetAddress().toString().replace("/", ""); System.out.println("====socket.getInetAddress()====="+ip); socket.setKeepAlive(true); is = socket.getInputStream(); os = socket.getOutputStream(); System.out.println("服务器端接受请求"); byte[] buff = new byte[5]; is.read(buff); String tempdata =new String(buff); // StreamEazyUse.getContent(is); if (tempdata.equals("quit1")) { System.out.println("不处理,继续::"+tempdata); continue; } System.out.println("接收到的数据为:"+tempdata); os.write("world".getBytes()); os.flush(); //发送响应 // is.close(); // os.close(); }catch(Exception e){ System.out.println("出现了错误,关闭连接"); if (is!= null) is.close(); if (os!= null) os.close(); e.printStackTrace(); } } } } }
SocketClient:
package socket; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.net.Socket; import java.net.UnknownHostException; public class SocketClient { public static void main(String[] args) throws UnknownHostException, IOException { Socket socket = new Socket("localhost",1111); if (socket.isConnected()){ OutputStream os =null; InputStream is = null; while (true) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String in = br.readLine(); os = socket.getOutputStream(); os.write(in.getBytes());//"hello".getBytes()); os.flush(); is = socket.getInputStream(); byte[] resp = new byte[5]; is.read(resp); System.out.println("response:" + new String(resp)); } catch (Exception e) { e.printStackTrace(); if(os != null) os.close(); //由于是长连接,抛异常时要关闭os,否则会broken pipe if(is != null) is.close(); } finally { System.out.println("do nothing"); } } } } }
相关推荐
总之,单线程阻塞TCP Server和Client是学习网络编程基础的好例子。虽然这种模型简单,但不适用于高并发场景,因为服务器无法同时处理多个客户端请求。在实际应用中,我们通常会采用多线程、异步I/O或复用套接字(如...
在这个"socket(server-client)"程序中,我们看到的是一个基于Socket实现的客户端和服务端通讯的例子。下面将详细讲解Socket的基本概念、工作原理以及如何通过Socket实现服务器与客户端的通信。 1. Socket基本概念:...
Socket编程在IT领域中是网络通信的基础,尤其在C#环境下,它提供了强大的能力来实现客户端(Client)和服务器端(Server)之间的TCP连接。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,...
Socket通信是计算机网络编程中的重要概念,主要用于实现客户端(Client)和服务器端(Server)之间的数据交换。在C/S模型中,服务器作为服务提供者,等待客户端的连接请求,而客户端则是服务的使用者,主动发起连接...
本篇文章将详细讲解基于C#的Socket Server和Client的控制台应用实例,以及如何实现它们之间的通信。 首先,我们要了解什么是Socket。Socket是网络通信中的一个基本概念,它相当于一个端点,允许两个程序通过网络...
wince下socket编程的例子,包括server端和client端。
在这个实例中,我们有两个关键组件:Server和Client,它们通过Socket进行交互。下面将详细解释Java Socket的工作原理、如何创建Server和Client以及如何在两个端点之间传递数据。 1. **Java Socket基础** Java ...
以上就是关于"C#编写socket做服务器和客户端例子"的相关知识点。理解并掌握Socket编程对于开发网络应用至关重要,它可以帮助你构建稳定、高效的数据传输通道。在实践中,还可以结合其他技术,如多线程、异步IO、委托...
在这个例子中,我们关注的是一个简单的Server端和Client端的实现,这类似于流行的即时通讯软件QQ的数据通信功能。 首先,让我们深入了解Winsocket的基本概念。Winsock是Windows Socket的简称,它是一个API,用于在...
在这个例子中,`handle_client`函数是处理每个客户端连接的工作函数,它将在新线程中运行。这样,服务器可以在不阻塞其他连接的情况下为每个新连接创建一个线程。 "Server.py"文件可能包含了服务器端的完整代码,而...
在这个"HP-Socket开发TCP Client"的例子中,我们将深入探讨如何使用HP-Socket库来创建一个简单的TCP客户端。 首先,我们需要理解TCP(传输控制协议)的基本概念。TCP是一种面向连接的、可靠的、基于字节流的传输层...
本教程将详细讲解如何使用C#的Socket库来实现一个简单的图片收发功能,涉及Server和Client端的交互以及多线程处理。 1. **Socket基础** Socket是网络通信的基本组件,它提供了进程间通过网络进行通信的接口。在C#...
Socket client = server.accept(); // 创建新线程处理客户端请求 new Thread(new ClientHandler(client)).start(); } ``` - 一个简单的客户端示例: ```java Socket socket = new Socket("localhost", 8080)...
在这个例子中,`handle_client`方法在一个新线程中运行,每当有新的连接请求到来时,服务器就会创建一个新的线程来处理这个请求。这样,即使有多个客户端同时连接,服务器也能保持高效响应。 需要注意的是,多线程...
本文实例讲述了Python Socket实现简单TCP ...tcp连接中server部分,启动一个ip和port口,在这个port口监听,当收到client发来的请求,用一个新的端口port2同client建立连接。 socket启动监听的过程就是: 创建socket
在"C# SOCKET 通讯例子"中,我们有两个关键部分:通讯Client端和通讯Server端。以下是这两个部分的简要概述: 1. **通讯Server端**: - 创建Socket对象并绑定到特定的IP地址和端口号,这通常使用`Socket.Bind()`...
client_socket, addr = server_socket.accept() print(f"Connected by {addr}") message = client_socket.recv(1024).decode() print(f"Received: {message}") response = "Hello from Server!" client_...
本篇将深入讲解如何在Android中实现Socket通信,包括客户端(Client)和服务器端(Server)的创建。 首先,我们来看服务器端(Socket_Server)的实现。在Android环境中,由于安全限制,通常不在主线程中进行网络...
"Client"部分是Socket编程中的客户端。客户端首先也需要创建一个Socket对象,指定服务器的IP地址和端口号,建立到服务器的连接。例如: ```java Socket socket = new Socket("localhost", 8080); ``` 这里的...
敝人近期整理的客户端与服务端通信实例,数据编码约定采用UTF-8编码,解决中文乱码问题.ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的...