`

java TCP端口监听

    博客分类:
  • java
阅读更多
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 
 * 服务器端程序:
 * 
 * 1. 监听一端口,等待客户接入; 2. 一旦有客户接入,就构造一个Socket会话对象; 3. 将这个会话交给线程处理,然后主程序继续监听。
 * 
 * @author OKJohn
 * @version 1.0
 */

public class Server extends ServerSocket {

	public Server(int serverPort) throws IOException {
		// 用指定的端口构造一个ServerSocket
		super(serverPort);
		try {
			while (true) {
				// 监听一端口,等待客户接入
				Socket socket = accept();
				// 将会话交给线程处理
				new ServerThread(socket);
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			close(); // 关闭监听端口
		}
	}

	// inner-class ServerThread
	class ServerThread extends Thread {
		private Socket socket;
		private BufferedReader in;
		private PrintWriter out;

		// Ready to conversation
		public ServerThread(Socket s) throws IOException {
			this.socket = s;
			// 构造该会话中的输入输出流
			in = new BufferedReader(new InputStreamReader(socket
					.getInputStream(), "GB2312"));
			out = new PrintWriter(socket.getOutputStream(), true);
			start();
		}

		// Execute conversation
		public void run() {
			try {

				// Communicate with client until "bye " received.
				while (true) {
					// 通过输入流接收客户端信息
					String line = in.readLine();
					if (line == null || "".equals(line.trim())) { // 是否终止会话
						break;
					}
					System.out.println("Received   message: " + line);
					// 通过输出流向客户端发送信息
					out.println(line);
					out.flush();
				}

				out.close();
				in.close();
				socket.close();

			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	// main method
	public static void main(String[] args) throws IOException {
		new Server(2088);
	}
}

 

在浏览器输入:http://localhost:2088/hello.do

浏览器显示:

GET /hello.do HTTP/1.1
Host: localhost:2088
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-cn,zh;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive

 

分享到:
评论
1 楼 xsgkaka 2013-01-30  
public Server(int serverPort) throws IOException {  
        // 用指定的端口构造一个ServerSocket  
        super(serverPort);  
        try {  
            while (true) {  
                // 监听一端口,等待客户接入  
                Socket socket = accept();  
                // 将会话交给线程处理  
                new ServerThread(socket);  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            close(); // 关闭监听端口  
        }  
    }  

while 循环内部为什么一直都在生成新的socket呢,ServerSocket的accept方法不是监听端口是否有请求介入的吗?那在new ServerThread(socket)方法之前为什么不判断一下 是否有请求接入啊?等有请求接入了在去执行线程处理函数。而是不停地产生新的socket去监听。

相关推荐

    java tcp server 创建线程监听端口,创建线程处理连接

    在Java中,我们可以使用`java.net.ServerSocket`类来创建一个服务器端点,监听特定的TCP端口,等待客户端的连接。 二、创建ServerSocket 要创建一个TCP服务器,首先需要实例化一个`ServerSocket`对象,并指定监听的...

    TCP端口监听示例TCP端口监听示例

    在编程实现TCP端口监听时,常见的编程语言如Java、Python、C++等都有相应的API支持。例如,在Python中,可以使用socket库来实现: ```python import socket # 创建socket对象 server_socket = socket.socket...

    java 扫描TCP端口

    在Java编程语言中,扫描TCP端口是网络编程的一个重要组成部分。这通常涉及到网络通信,尤其是在服务器端,需要检查特定的端口是否开放并监听连接请求。以下是对这个主题的详细解释。 首先,TCP(传输控制协议)是一...

    检测tcp端口是否被占用

    在进行网络编程时,经常需要检查特定的TCP端口是否被占用,以确保服务的正常运行或者避免冲突。本篇文章将详细解释如何检测TCP端口是否被占用,并结合VS2010环境下的C++代码实践进行阐述。 首先,了解TCP端口的基本...

    端口监听工具

    本篇文章将详细讨论TCP和UDP这两种主要的传输协议,以及如何使用端口监听工具进行测试。 TCP(Transmission Control Protocol)是互联网协议栈中的一个面向连接的协议,它提供了可靠的数据传输服务。TCP通过建立...

    一个java tcp服务器的基础框架

    TCP服务器主要负责监听指定端口,接收客户端连接请求,然后进行数据交互。 二、Java NIO与TCP服务器 Java NIO(New Input/Output)库提供了非阻塞I/O操作,使得TCP服务器可以处理多个并发连接。本框架可能采用了...

    socket编程 TCP client.java TCPserver.java

    在TCP Socket编程中,服务器端通常首先启动,监听特定的端口以等待客户端的连接请求。在Java中,我们可以使用`java.net.ServerSocket`类来创建服务器端的Socket。以下是一个简单的`TCP server.java`示例: ```java ...

    java建立TCP长链接

    在Java编程中,TCP(传输控制协议)常用于构建稳定、可靠的数据通信。TCP长连接是一种保持客户端与服务器端长时间连接的技术,以便于进行高效的数据交互。心跳机制是维持长连接的关键,它用来检测网络连接是否中断,...

    java tcp程序demo

    在Java中,我们可以使用`java.net.ServerSocket`类创建服务器端,它会监听指定的端口,等待客户端的连接。`accept()`方法用于接收客户端的连接请求。客户端则使用`java.net.Socket`类建立到服务器的连接,通常通过`...

    JAVA TCP和UDP Socket通信框架

    `ServerSocket`在指定端口监听连接请求,当客户端发起连接时,会创建一个`Socket`对象与之对应。客户端则通过`Socket`类建立到服务器的连接。在连接建立后,双方可以通过`Socket`的`getInputStream`和`...

    java tcp多线程通信

    在TCP通信中,服务器会监听特定端口,等待客户端的连接请求。当客户端发起连接后,服务器通过accept方法创建一个新的Socket实例来处理该连接。这个过程称为三次握手,确保双方都准备好进行通信。一旦连接建立,数据...

    java TCP协议服务器

    本文将深入探讨如何使用Java来实现一个基于TCP协议的服务器,我们将围绕`TCPSocketServer.java`源代码文件展开讨论,并结合`Java.jpg`可能包含的TCP服务器编程基础概念进行阐述。 首先,TCP协议是Internet协议族中...

    javatcp.zip_JAVATCP_TCP java_java Tcp _java网络_java网络编程

    Java TCP编程是Java网络编程中的核心部分,它基于TCP(传输控制协议)提供了一种可靠的、面向连接的数据传输方式。TCP是一种面向字节流的协议,确保数据在发送方和接收方之间完整无误地传输,即使在网络环境不稳定的...

    Java tcp服务器框架

    Java TCP服务器框架是一种用于构建高性能、可扩展网络应用的核心组件,尤其适合开发需要稳定通信的分布式系统。这个框架是基于Java编程语言实现的,利用了Java的Socket编程接口来搭建服务器与客户端之间的TCP连接。...

    tcp转发工具,中转TCP请求

    1. **服务器端**:这是TCP转发的起点,它监听特定的端口,等待客户端的连接请求。当客户端连接后,服务器端会接收客户端发送的数据,并将其转发到目标地址。 2. **客户端**:客户端连接到服务器端,并通过这个连接...

    java tcp 聊天程序

    Java TCP聊天程序是一种基于TCP协议实现的网络通信应用,它允许在局域网内的设备之间进行实时的文字聊天、在线状态追踪以及用户管理等操作。在这个项目中,开发者可能使用了Java语言的核心网络编程API,包括Socket和...

    Java Tcp 文件传输

    Java TCP文件传输是一种基于网络的通信方式,利用TCP(传输控制协议)的可靠连接特性来实现文件在不同设备之间的安全传输。在这个过程中,通常需要创建一个服务器端来监听客户端的连接请求,然后客户端通过建立连接...

    Java TCP IP Socket编程(原书第2版)

    《Java TCP/IP Socket编程》(原书第2版)是一本深入探讨Java中Socket编程的专著,旨在帮助读者理解并掌握如何在Java环境中利用TCP/IP协议进行网络通信。本书不仅详细介绍了Socket的工作原理,还提供了丰富的示例...

    javatcp.rar_java TCP线程_java tcp 线程

    在这个“javatcp.rar”压缩包中,我们很可能是找到了一些示例代码,用于演示如何在Java中实现TCP通信并结合多线程技术。 首先,让我们了解Java中实现TCP通信的基础。在Java中,`java.net.Socket`类代表一个TCP连接...

Global site tag (gtag.js) - Google Analytics