`

Server socket

阅读更多
package com.www.test;

import java.io.*;
import java.util.*;
import java.net.*;

public class ReceiveSocket {

	final int RECEIVE_PORT = 9090;

	// 该服务器的端口号
	// ReceiveSocket的构造器
	public ReceiveSocket() {
		ServerSocket rServer = null;
		// ServerSocket的实例
		Socket request = null; // 用户请求的套接字
		Thread receiveThread = null;
		try {
			rServer = new ServerSocket(RECEIVE_PORT);
			// 初始化ServerSocket
			System.out.println("Welcome to the server!");
			System.out.println(new Date());
			System.out.println("The server is ready!");
			System.out.println("Port: " + RECEIVE_PORT);
			while (true) { // 等待用户请求
				request = rServer.accept();
				// 接收客户机连接请求
				receiveThread = new serverThread(request);
				// 生成serverThread的实例
				receiveThread.start();
				// 启动serverThread线程
			}
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
	}

	public static void main(String args[]) {
		new ReceiveSocket();
	} // end of main
}

// 类serverThread
class serverThread extends Thread {

	Socket clientRequest;
	// 用户连接的通信套接字
	BufferedReader input; // 输入流
	PrintWriter output; // 输出流

	public serverThread(Socket s) { // serverThread的构造器
		this.clientRequest = s;
		// 接收receiveServer传来的套接字
		InputStreamReader reader;
		OutputStreamWriter writer;
		try { // 初始化输入、输出流
			reader = new InputStreamReader(clientRequest.getInputStream());
			writer = new OutputStreamWriter(clientRequest.getOutputStream());
			input = new BufferedReader(reader);
			output = new PrintWriter(writer, true);
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		output.println("Welcome to the server!");
		// 客户机连接欢迎词
		output.println("Now is:" + new java.util.Date() + " " + "Port:"
				+ clientRequest.getLocalPort());
		output.println("What can I do for you?");
	}

	public void run() { // 线程的执行方法
		String command = null; // 用户指令
		String str = null;
		boolean done = false;

		while (!done) {
			try {
				str = input.readLine(); // 接收客户机指令
			} catch (IOException e) {
				System.out.println(e.getMessage());
			}
			command = str.trim().toUpperCase();
			if (str == null || command.equals("QUIT"))
				// 命令quit结束本次连接
				done = true;
			else if (command.equals("HELP")) {
				// 命令help查询本服务器可接受的命令
				output.println("query");
				output.println("quit");
				output.println("help");
			} else if (command.startsWith("QUERY")) { // 命令query
				output.println("OK to query something!");
			}
			// else if …….. //在此可加入服务器的其他指令
			else if (!command.startsWith("HELP") && !command.startsWith("QUIT")
					&& !command.startsWith("QUERY")) {
				output.println("Command not Found!Please refer to the HELP!");
			}
		}// end of while
		try {
			clientRequest.close(); // 关闭套接字
		} catch (IOException e) {
			System.out.println(e.getMessage());
		}
		command = null;
	}// end of run
}


分享到:
评论

相关推荐

    server socket

    标题"server socket"表明我们关注的是服务器端的Socket实现,这通常涉及到一个程序监听并响应来自客户端的请求。描述中提到"this is a socket server source code.",暗示我们将讨论一个具体的Socket服务器源代码。 ...

    server socket 範例

    server socket 範例 ,可以直接在 linux 主機上面開發或直接執行

    java版类QQ Server socket聊天软件

    java版类QQ Server socket聊天软件 集服务器端与客户端为一体 功能强大

    server_socket.zip_Server_Socket co_gateway

    "server_socket.zip_Server_Socket co_gateway"这个压缩包文件显然包含了关于如何使用Server Socket的Delphi编程示例代码,该代码可能被用于构建应用网关。在这里,我们将深入探讨Server Socket的概念、其在Delphi中...

    HP-Socket开发TCP Server

    `,然后调用`server_socket.Create()`函数初始化socket,再使用`server_socket.Bind()`绑定到特定的IP地址和端口号,最后使用`server_socket.Listen()`开始监听。 3. **接受连接**: 当有客户端连接请求时,服务器端...

    JSocket_Server.rar_jSocket server_java server socket_java socket

    `JSocket_Server.rar` 提供了一个具体的Java Socket服务器实现的例子,这对于理解和实践Java服务器端网络编程至关重要。`Socket_Server` 文件可能包含了这个示例服务器的源代码,而`www.pudn.com.txt` 可能是一个...

    SQLSERVER触发程序 发起socket

    SQLSERVER触发程序 发起socket

    Socket_Server_Client

    clientSocket.Send(Encoding.UTF8.GetBytes("Hello, Server!")); byte[] buffer = new byte[1024]; int received = clientSocket.Receive(buffer); Console.WriteLine(Encoding.UTF8.GetString(buffer, 0, received)...

    Android下socket模拟http server

    Log.e("HttpServer", "Error creating server socket", e); } ``` 当有客户端连接时,`accept()`方法会阻塞直到有新的连接请求到达。然后,我们可以通过返回的`Socket`对象与客户端进行通信: ```java Socket ...

    socket server关闭时导致socket client也关闭 的原因及解决办法

    当Socket Server(服务端)关闭时,通常会导致与之相连的Socket Client(客户端)也关闭,这是因为TCP连接是全双工的,即数据可以双向传输。当一方关闭连接,另一方在尝试发送或接收数据时会检测到连接已断开,从而...

    UDPServer Socket

    在C#编程中,我们可以使用System.Net.Sockets命名空间中的UdpClient和Socket类来实现UDP服务器(UDPServer)。 首先,让我们详细了解UDPServer的基础知识: 1. **UDP协议基础**: UDP协议不建立连接,没有连接...

    Linux-socket-serverandclient.rar_embedded_linux server socket_l

    本篇将围绕"Linux-socket-serverandclient.rar"这个压缩包中的知识点展开,主要涉及Linux下的服务器套接字(socket)编程,包括服务器端和客户端的实现。 首先,我们来理解什么是套接字(Socket)。套接字是网络...

    MFC_CLIENT_SERVER SOCKET

    本文将深入探讨如何在Visual Studio 2015环境下,利用MFC实现客户端(Client)与服务器(Server)间的Socket通信。 首先,我们来看“Socket”这一概念。Socket,又称为套接字,是网络编程中的一个接口,用于不同...

    server_socket_

    `server_socket_`这个标题暗示我们这里讨论的是关于服务器端套接字(Server Socket)的应用,特别是在UDP(User Datagram Protocol)通信中的实践。UDP是一种无连接的、不可靠的传输层协议,它在互联网协议族中提供...

    windows2021 server socket连接数量所导致问题.docx

    在Windows 2021 Server操作系统中,socket连接数量可能会引发一些问题,特别是当系统频繁地创建和关闭socket连接时。这些连接如果管理不当,可能导致可用的端口资源耗尽,进而影响系统的稳定性和性能。这里我们将...

    Client-server_socket.rar_socket

    客户端-服务器(Client-server)架构中的套接字(Socket)技术是网络编程中的核心概念,主要涉及TCP(传输控制协议)通信。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用程序提供了双向通信的...

    tcl socket 编程实例

    - **Server Socket**:服务器端的Socket,负责监听客户端的连接请求。 - **Client Socket**:客户端的Socket,负责向服务器发起连接请求。 - **File Event**:一种机制,允许脚本在文件描述符可读或可写时执行某些...

    Socket编程

    在标题“Socket编程”中,我们聚焦的是服务器端的Server Socket和客户端的Client Socket。Socket是网络编程的一个抽象接口,它允许两个运行在网络上的程序通过网络进行数据交换。 在服务器端,Server Socket是服务...

    SSLServerSocket.rar_java socket _java socket ssl_java ssl server

    在"Secure Login based on SSL Server Socket"的场景中,我们将探讨如何利用这个功能来实现安全登录。 首先,了解SSL/TLS协议的基本原理非常重要。它们通过使用公钥/私钥加密技术,以及数字证书来确保数据的安全性...

Global site tag (gtag.js) - Google Analytics