学习了《微博是这样炼成的》开始的一个简单多线程server,先把代码记录下来,经测试很好用。有一点点小疑问?
package net;
import java.net.*;
import java.io.*;
public class ServerThread extends Thread{
private Socket client;//线程对象要处理的连接变量
private OutputStream out;//输出流对象
/**创建此线程对象时,传入一个要处理的连接对象*/
public ServerThread(Socket socket)
{
this.client = socket;
}
//封装发送消息的代码
public void sendMsg2Me(String msg) throws Exception
{
byte[] data = msg.getBytes();
out.write(data);
out.flush();
}
//调用处理连接的方法
public void run()
{
try {
processChat(client);
} catch (Exception e) {
e.printStackTrace();
}
}
//客户端处理进入的连接对象
private void processChat(Socket client) throws Exception
{
out = client.getOutputStream();
InputStream in = client.getInputStream();
String s = "你好,欢迎来到本论坛!\r\n";
this.sendMsg2Me(s);
String inputS = readString(in);
while(!inputS.equals("bye"))
{
System.out.println("客户端说:"+inputS);
s = "我收到你的话了"+inputS+"\r\n";
this.sendMsg2Me(s);
inputS = readString(in);
}
s = "欢迎再来!\r\n";
this.sendMsg2Me(s);
System.out.println("客户端退出连接!");
client.close();
}
/**
* 从流上(客户端)读到的字符串
*/
private String readString(InputStream ins) throws IOException
{
StringBuffer str = new StringBuffer();
char c=0;
while(c!=13)
{
int i = ins.read();
c = (char)i;
str.append(c);
}
return str.toString().trim();
}
//启动服务器,等待客户端进入
public static void setUpServer(int port)
{
try
{
ServerSocket server = new ServerSocket(port);
System.out.println("服务器创建成功!\r\n");
while(true)
{
Socket client = server.accept();
ServerThread tServerThread = new ServerThread(client);
tServerThread.start();
System.out.println("已经启动了一个线程去处理这个对象了!");
}
}catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
ServerThread.setUpServer(9090);
}
}
书上setUpServer()方法不是static方法,那么我又该如何启动这个类呢?
疑问已经解决;可以再写一个类去掉用。
package net;
import java.io.IOException;
import java.net.*;
public class SetUpServer {
public static void main (String args[]) throws IOException
{
ServerSocket tServer = new ServerSocket(9090);
while(true)
{
Socket tCilent = tServer.accept();
ServerThread tThread = new ServerThread(tCilent);
tThread.start();
}
}
}
具体的检验方式可于dos命令行输入telnet localhost 9090
分享到:
相关推荐
【标题】"简单的多线程WebServer"是一个个人编写的基于多线程技术的网络服务器。这个WebServer设计得相对基础,主要目的是为了让用户理解多线程在Web服务中的应用。 【描述】提到,该WebServer的实现非常简单,其...
以下是一个简单的Python TCPServer多线程示例: ```python import socket import threading class TCPThreadServer: def __init__(self, host='localhost', port=12345): self.server_socket = socket.socket...
本文将详细介绍如何使用mongoose库创建一个支持多线程的HTTP服务器,并探讨相关技术要点。 **mongoose库介绍** mongoose是一个轻量级的C语言库,用于构建嵌入式Web服务器。它具有易于使用的API,支持多种HTTP特性...
Java中的单线程和多线程是编程中的关键概念,特别是在服务器端开发中。了解它们的原理和应用对于构建高效、可扩展的客户端-服务器应用至关重要。以下是对这些概念的详细解析。 首先,我们来谈谈单线程。在Java中,...
标题中的“使用Java编写的一个简易多线程HTTP服务器”指的是一个使用Java编程语言实现的简单HTTP服务器,它利用了多线程技术来处理客户端的HTTP请求。在Java中,可以使用Socket编程接口来建立TCP连接,进而实现HTTP...
例如,下面是一个简单的多线程Windows服务的示例: ```csharp using System; using System.ServiceProcess; using System.Threading; public partial class MyService : ServiceBase { public MyService() { ...
6. **Example_TcpServer.au3**: 可能是一个创建 TCP 服务器的例子,利用多线程处理来自多个客户端的连接请求。每个连接都可以在单独的线程中处理,以提高服务器的并发能力。 7. **Example_Suspend.au3**: 这个示例...
在Java编程领域,构建一个简易的多线程HTTP服务器是一项常见的练习,这有助于理解网络通信、线程管理和HTTP协议的基本原理。在这个项目中,我们利用Java的线程池和Socket库来实现这样一个服务器,它支持GET、POST...
1. **多线程**:多线程是指在一个程序中可以同时执行多个独立的线程。在Web服务器中,多线程技术用于处理并发请求,使得服务器能够同时服务于多个客户端,提高资源利用率和响应效率。Java语言提供了丰富的多线程API...
多线程允许一个应用程序同时执行多个任务,提升程序的执行效率。在C#中,我们可以使用`System.Threading`命名空间下的`Thread`类来创建和管理线程。例如,创建一个新的线程并启动它,可以这样写: ```csharp Thread...
这个“简单QT多线程聊天程序”旨在提供一个基础的学习平台,帮助开发者理解如何在QT环境中利用多线程进行并发处理。 QT框架是一个跨平台的C++库,提供了丰富的GUI工具和网络编程接口。在这个聊天程序中,多线程技术...
Python的`socketserver`模块提供了`ThreadingTCPServer`类,它是一个混合类,继承自`TCPServer`和`ThreadingMixIn`,允许我们创建一个多线程的TCP服务器。`ThreadingTCPServer`会在每个客户端连接时创建一个新的线程...
本文将深入分析一个基于Java Server/Socket多线程技术实现的聊天室程序服务端。该服务端能够支持多人群聊和单人私聊功能。通过详细解读其代码结构、工作原理以及关键实现细节,帮助读者更好地理解Java多线程在网络...
在这个“tcp client简单实例 连接,发送接收断开,多线程”中,我们将探讨如何使用编程实现一个简单的TCP客户端,特别关注多线程的应用。 首先,TCP客户端的基本工作流程包括以下几个步骤: 1. **建立连接**:...
Java Socket多线程简易实现是网络编程中的一个基础概念,主要应用于客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、面向连接的字节流通信方式。多线程则是Java并发编程的重要特性,...
Linux环境下基于多线程的简单聊天工具之服务器,亲测! 建议和客户端配套使用,可采用如下生成可执行方式: gcc -o chat_server chat_server.c
本课程设计项目旨在利用Visual C++(VC++)开发一个简单的多线程局域网聊天程序。随着互联网的发展,即时通讯软件如QQ、MSN等已经成为人们日常生活中的重要组成部分。这些软件的实现往往涉及到复杂的网络通信和多...
【Java 多线程Client/Server聊天程序:ServerQQ详解】 在Java编程中,多线程技术是构建高效并发应用程序的基础。在这个名为"ServerQQ"的项目中,开发者利用Java的多线程特性实现了客户端(Client)与服务器端...
以下是一个简单的多线程服务器实现: 1. 创建一个新的类,继承自QThread,用于处理每个连接。 2. 在这个类中,重写run方法,这是线程实际执行的入口。 3. 当接收到新的连接时,创建一个新线程实例,并将QTcpSocket...