基于TCP/IP协议的Socket通信(1)

基于TCP/IP协议的Socket通信(1)

1、 套签字
当两台主机的程序要通过网络进行通信的时候,两台主机都要知道对方的地址。比如你与小王进行通话时,必须要知道对方的手机号,这样你才会打给小王,小王也会知道来电话的是你。电话号码类似于主机的地址,网络中用IP地址来表示主机的地址。
一个套接字都有自己的IP地址和端口号,两两套接字直接通过IP地址和端口号对应,这就保证了信息在两台主机的程序之间的准确传输。
在这种模式下主机A的程序将一段信息写进Socket1中,Socket1将信息发送给Socket2,Socket2将信息写入主机B的程序b中。

在利用套接字进行通信的时候,都是服务器和客户机之间进行通信。基于TCP/IP协议的Socket编程,两个套接字建立的链接都是可靠地,可靠的意思是说当数据在网络传输过程中出错时,数据会由发送方重新发送。
如图所示
利用套接字编程主要步骤如下
1、分别为服务器,客户机创建套接字,将两个套接字连接起来。
2、打开套接字的输入输出流。输入流用来接收对方套接字的数据,输出流用来向对方套接字输出数据。
3、利用输入输出流进行数据传输。
4、数据传输完毕后,关闭套接字连接。

看到这里可能有人会问,那么我想让客户机和客户及之间进行通信呢?我们可以利用服务器作为通信的中转站,比如客户机A要向客户机B发送数据,客户机A先将数据发送给服务器,服务器再将数据发送给客户机B。
在这里插入图片描述

2. 客户机端程序步骤为:
1、ServerSocket类
服务器端使用ServerSocket类创建套接字。
网络通信中,ServerSocket类先创建一个套接字对象,等待客户机套接字的连接,一旦客户机套接字申请连接,服务器套接字对象则会通过accept()方法返回一个对应客户机套接字的服务器套接字。这个时候服务器和客户机之间才得到了真的连接,

1.1 ServerSocket类的构造方法

public ServerSocket(int port) throws IOException

功能:创建一个以port为端口号的服务器端socket套接字,当socket套接字连接数为50时,则拒绝其他客户机端套接字的连接

参数 port:端口号

public ServerSocket(int port,int backlog) throws IOException

功能:创建一个以port为端口号的服务器端socket套接字,当socket套接字连接数为 backlog时,则拒绝其他客户机端套接字的连接

参数 port:端口号
backlog:能连接的最大套接字数目。

1.2 ServerSocket类的普通方法

public Socket accept()throws IOException
功能:服务器端指定端口号侦听客户端发出的连接请求,若接收到请求则与之连接,否则该方法一直阻塞知道连接成功。该方法返回一个新的Socket对象,服务器端通过它与连接的客户进行通信

public IntAdress getInetAddress()
功能:获取服务器端Socket的IP地址

public int getLocalPort()
功能:获取服务器端Socket侦听的端口号

public String toString()
功能:返回该套接字的字符串表示

public void close()throws IOException
功能:关闭Socket连接

2、Socket类
客户机端用socket类来创建套接字对象 2.1 Socket类的构造方法

public Socket(String host,int port)throws UnknowHostException,IOExceptio

功能:创建一个指定服务器host和服务器端口号port套接字对象,并向服务器发送连接请求 参数:host:服务器主机名
port :服务器端口号

public Socket(InetAddress address,int port)throws IOException

功能:创建一个指定服务器ip地址和服务器端口号port套接字对象,并向服务器发送连接请求 参数:address:服务器ip地址
port :服务器端口号

2.2 与Socket数据读写有关的常用方法

public InputStream getInputStram()throws IOException

功能:为当前socket对象创建输入流

public OutPutStream getOutPutStream()throws IOException

功能:为当前socket对象创建输出流

以上两个方法非常重要,getInputStream()用来创建输入流对象,getOutputStream()用来创建输出流对象。有了输入输出流,程序就可以非常方便的进行读写。

2.3关闭socket连接的方法

public synchronized void close() throws IOEception

功能:关闭建立的socket连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值