`
Tonyguxu
  • 浏览: 279639 次
  • 性别: 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+NIO

    在分布式Java应用中,TCP/IP协议和NIO(非阻塞I/O)是构建高性能、高可用性系统的关键技术。TCP/IP是一种传输层协议,确保数据在网络中的可靠传输,而NIO是Java提供的一个I/O模型,允许程序进行非阻塞的数据读写,...

    JAVA分布式开发

    1. **TCP/IP+BIO, TCP/IP+NIO, UDP/IP+BIO, UDP/IP+NIO**: - **TCP/IP**是传输控制协议/因特网协议,是互联网通信的基础,BIO(Blocking I/O)是同步阻塞I/O模型,适用于连接数量相对较少且连接稳定的情况。 - **...

    TCP-IP详解卷1:协议00008

    从给定的文件信息中,我们可以提炼出关于TCP/IP协议栈中特定协议——网络文件系统(Network File System,简称NFS)的详细知识点。以下是对这些知识点的深入解析: ### 端口映射与多版本支持 在TCP/IP协议栈中,...

    STM32F4x7_ETH_LwIP.rar

    STM32F4x7_ETH_LwIP.rar这个压缩包文件是针对STM32F4x7系列微控制器的以太网(Ethernet)通信开发资源,主要涉及了使用LwIP轻量级TCP/IP协议栈、FreeRTOS实时操作系统以及MQTT协议和pollarSSL库的集成应用。...

    java 网络编程 java 网络编程

    在这个领域,TCP/IP协议栈起着核心作用,因为它是互联网通信的基础。Java提供了丰富的API来支持网络编程,主要包括四个关键部分:Socket、ServerSocket、DatagramSocket和DatagramPacket。 1. **Socket编程**:...

    计算机网络常考.pdf

    TCP/IP协议是互联网通信的基础,由应用层、传输层、网络层和数据链路层组成。TCP(Transmission Control Protocol)是面向连接的、可靠的传输协议,通过三次握手建立连接,四次挥手释放连接。HTTP(Hypertext ...

    Java BIO Socke示例

    Java BIO (Blocking Input/Output) 是Java标准库中提供的一种基础网络编程模型,它主要用于创建基于TCP/IP的Socket通信服务。在这个"Java BIO Socke示例"中,我们将探讨如何使用Java BIO API来实现简单的Socket通信...

    0729分布式通信框架-RMI1

    TCP/IP协议是互联网的基础,其中TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP采用三次握手建立连接,确保双方都能通信,而四次挥手则用于断开连接。FIN标识表明...

    Python库 | bob.ip.flandmark-2.1.7.zip

    同时,由于其基于TCP/IP协议,该库还可以在网络环境中与其他服务进行交互,实现分布式计算和数据共享。 在开发过程中,bob.ip.flandmark库遵循了良好的软件工程实践,提供了详细的文档和示例代码,帮助用户快速上手...

    JAVA网络通信系统的研究与开发(论文+源代码+开题报告).rar

    1. **TCP/IP协议**:理解TCP/IP模型及其各层的主要功能,如应用层的HTTP、FTP,传输层的TCP和UDP,网络层的IP等。 2. **Java Socket编程**:学习如何创建Socket连接,发送和接收数据,处理异常,以及关闭连接。 3....

    华邦笔试题目(大意)软件方面的

    2、ping用了什么协议3、Tcp/ip的协议栈4、dhcp功能5、pc机bio 华邦笔试题目(大意)软件方面的 软件测试 若有遗漏、错误请指正。 共15道题目。 考了几道网络、硬件,之后有三道编译题目。 1、已知mac地址,如何...

    一站式学习Java网络编程 全面理解BIO:NIO:AIO1

    Socket 可以分为 TCP Socket 和 UDP Socket 两种,前者提供了可靠的连接,后者提供了不可靠的连接。 Unix 中的 Socket 是一种特殊的文件描述符,提供了进程间通信的基础。 通过 Socket,客户端可以与服务器之间...

    分布式部分概念

    TCP五层模型是对TCP/IP模型的一种简化,它包括: - **应用层**:应用程序。 - **传输层**:TCP/UDP协议。 - **网络层**:IP协议。 - **链路层**:以太网、Wi-Fi等。 - **物理层**:物理介质。 ### TCP三次握手四次...

    IFIX驱动列表_GOOD

    RNI 3/29/2002 Fisher Rosemont RS/3 RNI TCP/IP Driver RT5 6/10/2002 ABB Spider RP570 & 571 Serial Event Recording S7A 4/30/2002 Siemens S7 TCP/IP S7B 6/3/2002 Siemens S7 MPI serial S7M 3/29/2002 ...

    java网络高级编程

    在TCP/IP协议栈中,Java网络编程通常涉及以下层次: 1. 应用层:这一层包含HTTP、FTP、SMTP等应用协议。Java的`HttpURLConnection`和`HttpClient`库可以处理HTTP通信,而`MailAPI`则处理电子邮件发送。 2. 传输层...

    wiegand门禁控制器以及外接读卡器一PPT课件.pptx

    控制器按照不同分类可以分为联网型(如RS485和TCP/IP)和按控制门数量(如单门、双门和四门)。此外,还有单向控制器和双向控制器的区别,前者仅用于单一方向的身份验证,而后者支持双向验证,可以连接两个读卡器。 ...

    网络和IO面试题.zip

    1. **TCP/IP模型**:它由五层模型(物理层、数据链路层、网络层、传输层和应用层)组成,对应OSI七层模型的下三层。 2. **TCP与UDP**:TCP(传输控制协议)是面向连接的、可靠的协议,提供有序且无损的数据传输;...

    smb协议实现(cifs)

    PART I NBT: NetBIOS over TCP/IP 1 Chapter 1 A Short Bio of NetBIOS 3 1.1 NetBIOS and DOS: The Early Years 4 Chapter 2 Speaking NetBIOS 5 Chapter 3 The Basics of NBT Implementation Chapter 4 The Name ...

    JAVA网络通信系统的研究与开发(源代码+论文+开题报告).rar

    3. **TCP/IP协议**:本系统很可能使用了TCP(传输控制协议)进行数据传输,因为它提供了一种可靠的、面向连接的通信方式,确保数据的完整性和顺序性。TCP包括三次握手和四次挥手过程,理解这些概念对于分析源码至关...

    Java高级开发工程师面试笔记.zip

    - **TCP/IP协议**:理解TCP/IP五层模型,掌握HTTP、HTTPS等网络协议的工作原理。 - **WebSocket**:了解WebSocket协议的特点,以及在实时通信场景的应用。 7. **性能调优**: - **JProfiler/VisualVM**:了解...

Global site tag (gtag.js) - Google Analytics