`

简单的网络多客户端通信例子

阅读更多
一个简单的多客户端回答问题服务端,可以自动记录hashmap里没有的问题。
代码很简单,容易看懂 就不做解释了


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
import java.util.Scanner;


public class ServerTest {


	public static void main(String[] args) {
		ServerTest serverTest=new ServerTest();
		HashMap<String, String> quesMap = serverTest.creatMap();

		try {
			int i=1;
			ServerSocket serverSocket=new ServerSocket(8189);
			System.out.println("服务端启动,等待客户端连接...");
			while (true) {
				Socket incoming=serverSocket.accept();
				System.out.println("连接数 "+i);
				Runnable r =new ThreadHandler(incoming,quesMap);
				Thread t = new Thread(r);
				t.start();
				i++;
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	public HashMap<String, String> creatMap(){
		HashMap<String, String> quesMap= new HashMap<String, String>();
		quesMap.put("what is your name?", "my name is otto");
                quesMap.put("what is your age?", "i'm 24");
		return quesMap;
	}

}



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.HashMap;
import java.util.Scanner;

public class ThreadHandler implements Runnable{

	public ThreadHandler(Socket i,HashMap<String, String> hashMap){
		this.hashMap=hashMap;
		this.incoming=i;
	}


	public void run() {
		try{
		try {
			InputStream inStream = incoming.getInputStream();
			OutputStream outStream = incoming.getOutputStream();
			
			Scanner inScanner= new Scanner(inStream);
			PrintWriter out = new PrintWriter(outStream,true); 
			
			out.println("you can type EXIT to exit!");
			out.println("**************************");
			System.out.println("已经链接!");
			boolean done = false;
			boolean locked = false;
			String key=null;
			while (!done && inScanner.hasNextLine()) {
					String line=inScanner.nextLine();
					System.out.println(line);
					if(!locked && hashMap.containsKey(line)){
						out.println("Echo :"+hashMap.get(line));
						
					}else{
						if(locked==true){
						hashMap.put(key,line);
						locked=false;
						out.println("Echo:问题和答案已经保存!");
						}else {
							out.println("Echo:抱歉,目前只能回答有限问题!");
							out.println("但是系统将记录你的问题,如知道答案,请输入");
							key=line;
							  locked = true;
						}
						
					 
					}
					 if(line.trim().equals("EXIT"))done=true;
			
				}
			
		
			} finally{
				incoming.close();
			}
		}catch (IOException e) {
		e.printStackTrace();
		}
		}

	private Socket incoming;
	private HashMap<String, String> hashMap;
}


分享到:
评论

相关推荐

    服务器 客户端通信例子

    在IT行业中,服务器和客户端通信是网络编程的基础,尤其在分布式系统、Web应用以及各种互联网服务中扮演着核心角色。本示例主要涉及的是使用TCP协议进行服务器客户端通信的一个完整案例,适合在Visual Studio 2003 ...

    c# UDP 多线程 多客户端传输例子

    总的来说,这个C# UDP多线程多客户端传输例子展示了如何利用C#的套接字类和多线程技术实现高效的UDP通信。服务端通过监听端口并为每个客户端创建独立的处理线程,确保了并发处理能力;客户端则通过多线程发送和接收...

    创建网络通信客户端程序 小例子,C++.net源代码编写

    本文将深入探讨如何使用C++.NET来创建一个简单的网络通信客户端程序。C++.NET结合了C++的强大功能与.NET框架的便利性,为开发高效、跨平台的网络应用提供了可能。 首先,理解网络通信的基本原理至关重要。网络通信...

    C# Socket简单例子(服务器与客户端通信)

    总的来说,"C# Socket简单例子(服务器与客户端通信)"是一个基础的网络编程教程,旨在帮助开发者了解如何使用C#的Socket类建立简单的TCP连接并进行数据交换。这两个程序为理解Socket通信机制提供了直观的实践,为...

    linux socket 多客户端通信开发文档

    在多客户端通信场景下,服务器需要处理来自多个客户端的连接请求,并确保数据的正确传输。本文档将详细介绍如何利用Linux Socket实现多客户端通信,以及如何结合消息队列和管道进行进程间的通信。 首先,我们需要...

    Python TCPServer 多线程多客户端通信的实现

    本文将深入探讨如何利用Python的多线程特性实现在TCPServer上的多客户端通信。 首先,让我们理解TCP(传输控制协议)的基本原理。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。它确保了数据包的顺序...

    服务器与客户端的简单例子1

    总结来说,`IdTCPServer` 和 `IdTCPClient` 是 Indy 库中用于实现TCP服务器和客户端通信的工具,它们使得开发者能够轻松地构建网络应用程序。通过这个简单的例子,我们可以学习到如何设置和管理服务器与客户端的连接...

    易语言 网络通信例子

    在“易语言网络通信例子”这个主题中,我们将深入探讨如何使用易语言进行客户端和服务端的网络通信。 网络通信是计算机科学中的一个重要领域,它涉及两个或多个设备之间的数据交换。在易语言中,我们可以通过构建...

    简单的服务器与客户端聊天例子2

    本示例"简单的服务器与客户端聊天例子2"展示了如何使用Delphi编程语言构建一个基础的聊天应用,通过TCP协议进行通信。这里我们将深入探讨相关知识点。 1. **TCP协议**:传输控制协议(TCP)是一种面向连接的、可靠...

    STM32F407开发板-以太网-TCP客户端网络通信

    这个例子可能涵盖了从网络初始化、TCP连接建立到数据传输的完整流程,是学习和实践STM32以太网TCP客户端通信的宝贵资源。通过分析和运行这个示例,你可以深入理解STM32F407开发板如何与网络进行交互,并为自己的项目...

    WinSock实现简易服务端和客户端通信 (C++)

    本教程将深入探讨如何使用WinSock在C++中实现简单的服务端和客户端通信。 首先,我们需要理解网络通信的基本概念。服务端通常是一个持续运行的程序,等待客户端的连接请求,而客户端则会发起连接并发送数据。在TCP/...

    linux下的简单的TCP客户端服务器通信程序

    4. 接受连接:当有客户端请求连接时,使用`accept()`函数接受连接并返回一个新的套接字,用于与客户端通信。 5. 数据交换:通过新套接字上的`read()`和`write()`函数与客户端交换数据。 6. 关闭连接:完成通信后,...

    Python 通过 socket 实现服务端和客户端相互间网络通信的例子

    本例中,我们探讨的是如何使用Python的socket库创建一个简单的服务端(server.py)和客户端(client.py)来实现双向通信。 1. **Python socket基础知识**: - `socket`模块提供了低级网络通信接口,它是基于...

    WCF客户端代码例子

    **WCF客户端代码例子** Windows Communication Foundation (WCF) 是微软.NET Framework中用于构建服务导向应用程序的技术。它提供了一种统一的方式,通过网络在不同应用之间交换数据和服务。本示例将详细介绍如何在...

    VC6.0客户端和服务器通信例子

    总结来说,"VC6.0客户端和服务器通信例子"这个主题涵盖了网络编程的基础知识,包括TCP/IP通信、套接字编程、客户端-服务器交互以及在VC6.0环境下进行调试。这些技术对于任何从事网络应用开发的程序员来说都是必不可...

    CSocket简单例子服务器与客户端通信.doc

    本文档提供了一个简单的C# CSocket示例,展示了如何实现服务器与客户端之间的TCP连接通信。在TCP/IP网络编程中,Socket是用于在应用程序之间建立和维护网络连接的关键组件。以下是对示例中涉及的主要知识点的详细...

    Java多线程_ServerSocket服务端与客户端通信案例

    通过以上步骤,我们可以实现一个基本的多线程ServerSocket服务端和Socket客户端通信案例。需要注意的是,在实际应用中,网络编程可能涉及到网络异常处理、多线程同步、资源管理等诸多细节问题,需要根据具体情况来...

    利用mfc实现的udp通信例子,包括,客户端服务器端

    本压缩包包含了一个利用MFC(Microsoft Foundation Classes)实现的UDP通信实例,涵盖了客户端和服务端的代码。 MFC是微软提供的一套C++类库,它将Windows API包装成易于使用的对象,使得开发者能更容易地构建...

    OPC客户端的例子

    本压缩包提供的"OPC客户端的例子"是一个VB6(Visual Basic 6)开发的 OPC DA(Data Access)客户端示例代码,对于初学者来说,是学习如何使用OPC技术连接和交互数据的宝贵资源。 在VB6DAautoSample_v3.1(v5)中,...

    网络游戏客户端编程 随书code 全

    通过分析和运行这些例子,读者可以了解到网络游戏客户端编程的关键技术和实现细节。 1. **网络游戏客户端的基本架构**:客户端通常由用户界面、网络通信模块、游戏逻辑模块和资源管理模块组成。这些示例可能涵盖了...

Global site tag (gtag.js) - Google Analytics