`
Tonyguxu
  • 浏览: 272410 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
阅读更多

客户端

java.net.Socket

作用:用于建立连接和网络IO的操作。


构造:


主要方法:

 

 

//创建一个流套接字并将其连接到指定主机上的指定端口号 --发送连接请求?
//问题1:如果想设置与服务器建立连接有超时,how to do?
Socket socket = Socket(目标IP或域名, 目标端口);
//设置等待响应的超时时间
socket.setSoTimeout(int timeout);

//读取服务器端返回的流
BufferedReader in = new BufferedReader(
new InputStreamReader(Socket.getInputStream));
in.readLine();
//创建向服务器写入流
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
out.println("hello");

服务器

java.net.ServerSocket

构造方法:在指定端口创建服务器套接字,用于监听客户端的连接请求。如果该端口已绑定有server,则抛IOException(确切是BindException)。

 

java.net.Socket

作用:网络IO操作。


 

 

//创建绑定到特定端口的服务器套接字
//对本地指定端口监听客户端是否有建立连接的请求
ServerSocket ss = new ServerSocket(监听端口);

//ServerSocket 调用 accept() 将只阻塞此时间长度timeout
//即 最多会等待timeout时间阻塞来等待客户端建立连接的请求
ss.setSoTimeout(int timeout);

//接受客户端建立连接的请求,返回的Socket用于与client交互
Socket socket = ss.accept();
 

客户端,通常将读取来自服务器端的消息另起线程处理;

服务器端,主线程中serverSocket不断监听端口,看是否有客户端的连接请求,如果有则响应请求并建立连接创建Socket实例,通常为每个socket实例创建一个线程,在该线程中与客户端进行通信。

深入

通过Socket、ServerSocket可以实现比较简单的client/server通信。


为了更符合实际情况

变化1: 多个客户端,1个服务器端,多个客户端可同时发请求给服务器端,服务器端同时接受这些请求。


实现方式1:server为每个请求建一个socket。

产生的问题 :如果client数目很多,会导致产生很多socket实例,不仅消耗了服务器很多资源还会导致服务器必须能够支撑非常高的连接数 ;其次,生成socket(建立连接)是比较耗时的,频繁的创建会导致性能不足。


改进方式:由一个连接池 来维护socket,这样不仅能限制socket的数目,还避免了socket的重复创建带来的开销。

产生的问题 :连接池中socket数目有限,如果同时要用socket的请求很多,这样会造成激烈的竞争和等待。还有一个需要考虑是关于设置客户端超时 的问题 ,如果服务器负载比较大,处理请求变慢,会导致客户端无限等待响应,设置客户端超时是有必要的。


选择的处理方式:一连接一线程。ServerSocket通过accept获取socket后,将此socket放入一个线程中处理。通过限制创建的线程的数量 可以避免创建过多的线程。


##可参考学习下《java并发编程实践》ch6.1

 

 

分享到:
评论

相关推荐

    Java+TCP/IP+Socket编程++原书第2版.pdf

    Java + TCP/IP+ Socket编程++ 原书第2版.pdf 中文版

    Java+TCP/IP+Socket编程++原书第2版

    Java+TCP/IP+Socket编程++原书第2版

    《TCP/IP详解 卷2:实现》PDF:part2

    《TCP/IP详解 卷2:实现》完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15 000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。本书不仅说明了插口API和协议族的关系以及主机...

    实训(2)Windows环境下TCP/IP协议的配置,TCP/IP诊断.pdf

    实训(2)Windows环境下TCP/IP协议的配置,TCP/IP诊断.pdf

    TCP/IP高效编程(Effective TCP/IP Programming)

    《tcp/ip高效编程:改善网络程序的44个技巧》是tcp/ip 领域的经典著作,对tcp/ip 网络编程中存在的各种问题进行了全面解析,旨在帮助读者深入透彻地理解tcp/ip 网络编程。本书组织方式比较特别,正文部分包括4 章,将...

    remoting +tcp/ip+ http通信小程序

    remoting +tcp/ip+ http通信小程序,还是很看好c#未来发展,remoting可应用于服务器监控客户端的程序,也可应用于聊天室,当然也可做股票行情系统开发之用,范围还是比较广的,学习曲线长于WS低于Socket,可维护性/...

    Windows环境下TCP/IP协议的配置,TCP/IP诊断

    (1)懂得在Windows系统中进行网络配置; (2)掌握如何在Windows系统中进行TCP/IP协议配置。 (3)熟悉使用ping命令工具来进行测试; (4)熟悉利用ipconfig工具进行测试

    Linux TCP/IP 架构、设计与实现[TCP/IP Architecture, Design and Implementation in Linux] 1/5

    TCP/IP Architecture, Design and Implementation in Linux 1/5 For All: [Part 1/5] http://download.csdn.net/source/1345609 [Part 2/5] http://download.csdn.net/source/1345649 [Part 3/5] ...

    tcp/ip教程 tcp/ip教程

    tcp/ip教程 tcp/ip教程tcp/ip教程tcp/ip教程tcp/ip教程

    tcp/ip详解pdf版

    大家知道,TCP/IP已成为计算机网络的事实上的标准。在关于TCP/IP的论著中,最有影响的就是两部著作。一部是Douglas E. Comer的《用TCP/IP进行网际互连》,而另一部就是Stevens写的这3卷书。这两套巨著都很有名,各有...

    tcp/ip高效编程

    <Effective TCP/IP Programming>中文版,带书签,还算清晰

    modbusTCP/IP通信应用详述(原创)

    本文为原创,从实用出发,描述了modbusTCP/IP即 modbusETHERNET通信详细说明使用过程和概念,通俗易懂,同时讨论了modbusTCP/IP通信中,智能表作TCPserver和作TCPclient两种情况。modbus中常用的软件modscan32和...

    TCP/IP协议详解卷二:实现

    《TCP/IP详解·卷2:实现》完整而详细地介绍了TCP/IP协议是如何实现的。书中给出了约500个图例,15000行实际操作的C代码,采用举例教学的方法帮助你掌握TCP/IP实现。《TCP/IP详解·卷2:实现》不仅说明了插口API和...

    TCP/IP详解 卷1 TCP/IP Illustracted Volume 1:The Protocols

    TCP/IP详解卷1:http://download.csdn.net/source/2608318 TCP/IP详解卷2:http://download.csdn.net/source/2608348 TCP/IP详解卷3:http://download.csdn.net/source/2608358 TCP/IP技术大全:...

    TCP/IP入门经典(第5版)

    《TCP/IP入门经典(第5版)》深入浅出地介绍了TCP/IP协议的入门知识。全书分为6个部分,共24章:首先从TCP/IP基础知识开始;接着着重介绍了TCP/IP协议系统;然后介绍了TCP/IP连网的相关知识;第4部分对TCP/IP中使用的...

    TCP/IP进行网际互联 卷1 原理、协议与结构和TCP-IP详解卷一:协议

    两本合集。里面可能含有一些自己pdf标记,自行删除即可。 TCP/IP协议栈 TCP-IP详解卷一:协议 TCP IP进行网际互联 卷1 原理、协议与结构

    TCP/IP卷一TCP/IP卷一TCP/IP卷一

    tcp/ip详解 tcp/ip详解 tcp/ip详解 tcp/ip详解tcp/ip详解tcp/ip详解tcp/ip详解

    TCP/IP网络与协议

    本书内容十分丰富,几乎涵盖了有关TCP/IP的各个方面,包括开放式通信模型、TCP/IP通信模型、IP网络中的命名和寻址机制、地址解析及反向地址解析协议、DNS域字服务器、WINS、地址发现协议、IPv6、IP网络中的路由协议...

Global site tag (gtag.js) - Google Analytics