`
ligf06
  • 浏览: 103085 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

socket长连接例子(server&client)

 
阅读更多

最近做了一个测试,写了一个简单的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程序

    总之,单线程阻塞TCP Server和Client是学习网络编程基础的好例子。虽然这种模型简单,但不适用于高并发场景,因为服务器无法同时处理多个客户端请求。在实际应用中,我们通常会采用多线程、异步I/O或复用套接字(如...

    socket(server-client)

    在这个"socket(server-client)"程序中,我们看到的是一个基于Socket实现的客户端和服务端通讯的例子。下面将详细讲解Socket的基本概念、工作原理以及如何通过Socket实现服务器与客户端的通信。 1. Socket基本概念:...

    Socket编程TCP连接client和server

    Socket编程在IT领域中是网络通信的基础,尤其在C#环境下,它提供了强大的能力来实现客户端(Client)和服务器端(Server)之间的TCP连接。TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,...

    Socket通信Client/Server

    Socket通信是计算机网络编程中的重要概念,主要用于实现客户端(Client)和服务器端(Server)之间的数据交换。在C/S模型中,服务器作为服务提供者,等待客户端的连接请求,而客户端则是服务的使用者,主动发起连接...

    c#socket ServerAndClient 控制台例子

    本篇文章将详细讲解基于C#的Socket Server和Client的控制台应用实例,以及如何实现它们之间的通信。 首先,我们要了解什么是Socket。Socket是网络通信中的一个基本概念,它相当于一个端点,允许两个程序通过网络...

    wince下socket编程的例子,包括server端和client端

    wince下socket编程的例子,包括server端和client端。

    Java Socket实例(Server+Client)

    在这个实例中,我们有两个关键组件:Server和Client,它们通过Socket进行交互。下面将详细解释Java Socket的工作原理、如何创建Server和Client以及如何在两个端点之间传递数据。 1. **Java Socket基础** Java ...

    C#编写socket做服务器和客户端例子

    以上就是关于"C#编写socket做服务器和客户端例子"的相关知识点。理解并掌握Socket编程对于开发网络应用至关重要,它可以帮助你构建稳定、高效的数据传输通道。在实践中,还可以结合其他技术,如多线程、异步IO、委托...

    winsocket编程实现简单 server端和client端

    在这个例子中,我们关注的是一个简单的Server端和Client端的实现,这类似于流行的即时通讯软件QQ的数据通信功能。 首先,让我们深入了解Winsocket的基本概念。Winsock是Windows Socket的简称,它是一个API,用于在...

    Python的Socket连接例子(包含多线程例子)

    在这个例子中,`handle_client`函数是处理每个客户端连接的工作函数,它将在新线程中运行。这样,服务器可以在不阻塞其他连接的情况下为每个新连接创建一个线程。 "Server.py"文件可能包含了服务器端的完整代码,而...

    HP-Socket开发TCP Client

    在这个"HP-Socket开发TCP Client"的例子中,我们将深入探讨如何使用HP-Socket库来创建一个简单的TCP客户端。 首先,我们需要理解TCP(传输控制协议)的基本概念。TCP是一种面向连接的、可靠的、基于字节流的传输层...

    C# Socket Server Client 收发图片

    本教程将详细讲解如何使用C#的Socket库来实现一个简单的图片收发功能,涉及Server和Client端的交互以及多线程处理。 1. **Socket基础** Socket是网络通信的基本组件,它提供了进程间通过网络进行通信的接口。在C#...

    有关Java的Socket编程入门例子

    Socket client = server.accept(); // 创建新线程处理客户端请求 new Thread(new ClientHandler(client)).start(); } ``` - 一个简单的客户端示例: ```java Socket socket = new Socket("localhost", 8080)...

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

    在这个例子中,`handle_client`方法在一个新线程中运行,每当有新的连接请求到来时,服务器就会创建一个新的线程来处理这个请求。这样,即使有多个客户端同时连接,服务器也能保持高效响应。 需要注意的是,多线程...

    Python Socket实现简单TCP Server/client功能示例

    本文实例讲述了Python Socket实现简单TCP ...tcp连接中server部分,启动一个ip和port口,在这个port口监听,当收到client发来的请求,用一个新的端口port2同client建立连接。 socket启动监听的过程就是: 创建socket

    C# SOCKET 通讯例子

    在"C# SOCKET 通讯例子"中,我们有两个关键部分:通讯Client端和通讯Server端。以下是这两个部分的简要概述: 1. **通讯Server端**: - 创建Socket对象并绑定到特定的IP地址和端口号,这通常使用`Socket.Bind()`...

    socket简单应用例子

    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通讯例子

    本篇将深入讲解如何在Android中实现Socket通信,包括客户端(Client)和服务器端(Server)的创建。 首先,我们来看服务器端(Socket_Server)的实现。在Android环境中,由于安全限制,通常不在主线程中进行网络...

    Socket入门小例子

    "Client"部分是Socket编程中的客户端。客户端首先也需要创建一个Socket对象,指定服务器的IP地址和端口号,建立到服务器的连接。例如: ```java Socket socket = new Socket("localhost", 8080); ``` 这里的...

    Delphi TCPIP通信 实例 解决中文乱码问题 SOCKET SERVER-CLIENT

    敝人近期整理的客户端与服务端通信实例,数据编码约定采用UTF-8编码,解决中文乱码问题.ServerSocket组件可以同时接受一个或多个ClientSocket组件的连接请求,并与每个ClientSocket组件建立单独的连接,进行单独的...

Global site tag (gtag.js) - Google Analytics