`

TCP服务器程序模型的学习(Socket连接进一步理解学习)

阅读更多
服务器如果需要同时跟多个客户端会话,服务器端就需要循环调用ServerSocket.accept()方法进行不断的监听处理;另外如果服务器端程序与每个客户端的会话过程不能互相影响的话,就需要启动多个线程分别处理每个请求
下面给个例子(发送一行文本字符,服务器端返回倒序的文本):
1.ReverseServer.java文件
package cn.com;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ReverseServer {

	public static void main(String[] args) {

		try {
			ServerSocket ss = new ServerSocket(8001);

			boolean bRunning = true;

			while (bRunning) {
				Socket s = ss.accept();
				new Thread(new Servicer(s)).start();
			}
			ss.close();

		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
}



2.Servicer.java文件
package cn.com;

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;

public class Servicer implements Runnable {
	Socket s;

	public Servicer(Socket s) {
		this.s = s;
	}

	@Override
	public void run() {
		// TODO Auto-generated method stub

		try {
			InputStream ips = s.getInputStream();
			OutputStream ops = s.getOutputStream();

			BufferedReader br = new BufferedReader(new InputStreamReader(ips));
                          //需要启动自动flush功能
			PrintWriter pw = new PrintWriter(ops,true);
			while (true) {
				String strLine = br.readLine();
				if (strLine.equalsIgnoreCase("quit")) {
					break;
				}
				System.out.println("strLine =="+strLine);
				String strEcho = (new StringBuffer(strLine).reverse())
						.toString();

				pw.println(strLine + "---->>>" + strEcho);
				

			}

			br.close();
			pw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

}



    当服务端运行起来后,我们就可以模拟客户端来测试:
cmd---->telnet 127.0.0.1 8001---->输入一行字符,回车就会看到效果

分享到:
评论

相关推荐

    TCP面向对象服务器应用程序编程实例(Winsock编程原理)

    一个基于某种I/O方法的TCP服务器:能够实现模拟C/S模型的通信方式,服务器端负责信息的接收,并能够返回给客户端相应的消息;

    使用IOCP完成端口和SOCKET封装的成熟异步TCP类

    支持客户端和服务器的常用TCP接口:绑定Bind、监听Listen、接收Recv、连接Conn、发送Send、关闭Close。所有接口均使用异步回调的方式处理,内部实现使用Windows下性能最高的IOCP完成端口网络模型,并很好地处理了多...

    TCP服务器如何使用select处理多客户连接

    本文用一个简化的实例说明如何在一个TCP服务器程序中,使用select处理同时出现的多个客户连接,文章给出了程序源代码,阅读本文需要熟悉基本的socket编程知识,熟悉基本的服务器/客户端模型架构;本文对网络编程的...

    TCP/IP网络协议程序设计-聊天室

    最重要的是,socket 是面向客户/服务器模型而设计的,针对客户和服务器程序提供不同的socket 系统调用。客户随机申请一个socket (相当于一个想打电话的人可以在任何一台入网电话上拨号呼叫),系统为之分配一个socket...

    tcp socket代理服务器

    中间件 转发服务 包含: tcp socket基础编程 代理服务器模型,源码,demo。

    简单的TCP模式的客户端与服务器

    客户端,服务器基于MFC平台编写,多线程实现socket编程

    C++编写 win32控制台下 Socket通信 多线程 聊天室 服务器 客户端

    C++语言编写,SOCKET套接字通信,分服务器和客户端,多线程模型,Win32控制台。 首先聊天室分为服务端和客户端,通过TCP连接通信。运行顺序为: 1.首先打开服务服; 2.打开客户端,用户输入名字,连接到服务端后...

    基于TCP协议与Python中Socket模块的人群分布数据传输与远程CNN识别模型部署【100011676】

    本次 Project 中,我们利用 TCP 协议、通过基于 Python 的 socket 的模块,实现了人群分布数据的传输与远程卷积神经网络的模型部署和识别应用。具体流程与功能包括:将本地笔记本和树莓派设备上的摄像头获取的视频流...

    C语言编写基于TCP和UDP协议的Socket通信程序示例

    主要介绍了C语言编写基于TCP和UDP协议的Socket通信程序示例,其中TCP的客户端与服务器端采用多线程实现,需要的朋友可以参考下

    Python 中的 Socket 编程

    多连接的客户端 / 服务器程序 多连接的服务端 多连接的客户端 运行多连接的客户端和服务端程序 客户端 / 服务器应用程序 应用的协议头 发送应用程序消息 应用程序消息类 消息入口点 服务端主程序 服务端消息类 ...

    Socket I/O 模型的使用示例

    异步socket使用的示例代码,包括选择、异步选择、事件选择、重叠IO、完成端口。代码里包括客户端和服务端的代码,是学习socket的非常好的教材。

    实验8-Windows Socket I/O模型

    在上述I/O模型中自选一个I/O模型,构建一个TCP服务器,该服务器能: 能显示客户端发来的数据 编写客户端程序,使之能: 从键盘输入数据并发送到服务器 能接收服务器发来的数据  当输入“exit”时退出程序

    C++Window服务器初级模型

    使用的是Socket模型的选择模型,能进行一服务器对多客户端的管理,客户端发送一个字符,服务器会将消息转发回每个客户端,采用了多个线程进行管理收发消息,在等待发送消息的时候会阻断线程。 适合于初级程序猿进行...

    SOCKET模型之重叠IO

    SOCKET模型之重叠IO篇

    论文研究-Linux下基于TCP的预先派生子进程服务器的Socket编程 .pdf

    Linux下基于TCP的预先派生子进程服务器的Socket编程,和家强,刘彦隆,描述了客户/服务器模型以及常见的服务器类型--基于TCP的并发服务器。在一个基于TCP回射服务器程序的基础上,结合实际Web应用中的多进

    TCP一对多通信_基于Select模型—VS2010版

    我用MFC VS2010编写的一个 TCP 一对多通信的程序(MFC 对话框程序),就是服务器端利用Select模型技术, 能同时接收多个客户端的消息, 其次, 服务器端还能将消息群发给所有已连接的客户端, 实现的基本思路 是使用...

    python网络编程之服务器架构

    并建立socket对象监听客户端的TCP连接请求,如有请求便同意与客户端建立tcp连接 客户端运行时能够提示并接收用户输入的电影名称,并将电影名称数据传递给服务器(需与服务器建立tcp连接) 服务器接收到客户端传递的...

    Windows下基于socket多线程并发通信的实现

    本文介绍了在Windows 操作系统下基于TCP/IP 协议Socket 套接口的通信机制以及多线程编程知识与技巧,并给出多线程方式实现多用户与服务端(C/S)并发通信模型的详细算法,最后展现了用C++编写的多用户与服务器通信的...

    Linux-Socket-服务器编程实例.pptx

    Linux Socket服务器端编程实例 例:建立一个Linux TCP服务器,等待客户端的连接请求,一旦接收到客户端请求,将客户端的IP地址和端口号打印出来,并且向客户端发送"Hello!Socket communication world!"字符串,然后...

    c_socket编程入门

    可见,在应用程序端或者服务器端创建了Socket对象之后,就可以使用Send/SentTo方法将数据发送到连接的Socket,或者使用Receive/ReceiveFrom方法接收来自连接Socket的数据; 针对Socket编程,.NET 框架的 Socket ...

Global site tag (gtag.js) - Google Analytics