Java使用Socket进行通信

本文介绍了Java中如何使用ServerSocket创建TCP服务器端,并详细解析了Socket类在通信中的应用,包括构造函数、输入输出流的获取。还提供了简单的demo示例,帮助理解TCP Socket通信过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.使用ServerSocket创建TCP服务器端

  使用tcp通信的两个通信实体是有服务器端、客户端之分(不过建立起了socket连接之后,就不用区分服务端与客户端了,两个实体之间可以互相通信了。建立起了socket连接的示意图如图1所示)。
在这里插入图片描述

图1 建立了socket连接的两个通信实体的示意图

java中能接收其他通信实体连接请求的类是ServerSocket,通过ServerSocket对象可以监听来自其他实体的socket连接,若没有连接,则ServerSocket对象一直等待。具体这个监听方法在下面:

  • Socket accpet():这个方法返回一个Socket对象。当监听到到来自其他实体的socket请求时,则返回一个Socket对象;否则,该方法一直等待,线程也被阻塞

  当然,这里有几个用于ServerSocket对象的构造函数

  • ServerSocket(int port):用指定端口来创建一个ServerSocket。如ServerSocket server=new ServerSocket(8080),默认ip是本机ip(127.0.0.1),端口是8080。
  • ServerSocket(int port,int backblog):增加一个用来改变连接队列长度的参数backlog(这里我也不是太清楚)。
  • ServerSocket(int port,int backblog,InetAddress localAddress):在机器有多个ip时,允许设置localAddreess来指定将ServerSocket绑定到指定ip上。

2.使用Socket进行通信

  好了,在了解完用ServerSocket创建TCP服务器端后,我们就可以使用Socket进行通信。首先Socket有如下两个构造函数

  • Socket(InetAddress/String remoteAddress,int port):第一个参数用于指定SocetServer的ip地址,可以是String对象也可以是InetAddrees对象,第二个参数时对应SocketServer的端口。
  • Socket(InetAddrees/String remoteAddress,int port, InetAddress localAddress,int localPort):新增加的两个参数用于本机有多个ip时指定本地ip地址和端口。

  当客户端和服务器端建立socket连接(即各自产生socket对象)后,客户端和服务器端就不用再区分了。Socket对象提供下面两个方法来获取输入流和输出流:

  • InputStream getInputStream():返回Socket对象对应的输入流,让程序通过该输入流从Socket对象中取出数据。
  • OutputStream getOutputStream():返回Socket对象对应的输出流,让程序通过该输出流从Socket对象中输出数据。

3.demo展示

Server.java

public class 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值