套接字相关知识

什么是套接字

套接字是一种通信机制,通信两方的一种约定,用套接字中的相关函数来完成通信过程。
类型:流套接字,数据报套接字,原始套接字。
(1)流套接字:
数据在传输过程中不会消失;
数据是按照顺序传输的;
数据的发送和接收不是同步的
(2)数据报套接字
强调快速传输而非传输顺序;
传输的数据可能丢失也可能损毁;
限制每次传输的数据大小;
数据的发送和接收是同步的
(3)原始套接字
该套接字允许对较低层协议(如IP或ICMP)进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备。

TCP/IP协议中的四个层次

应用层:
应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
(1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输应用使用了SMTP协议、万维网应用使用了HTTP协议、远程登录服务应用使用了有TELNET协议。
(2)应用层还能加密、解密、格式化数据。
(3)应用层可以建立或解除与其他节点的联系,这样可以充分节省网络资源。
运输层:
作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
网络层:
网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。
网络接口层:
在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

socket常用函数

(1)socket函数
套接字的构造方法,有一些参数
(2)bind函数
套接字绑定到一个地址,并制定一个端口号。
(3)listen函数
listen函数使用主动连接套接字变为被连接套接口,使得一个进程可以接受其它进程的请求
(4)accept函数
accept()接受一个客户端的连接请求,并返回一个新的套接字。
(5)getInputStream函数
获得网络连接输入,同时返回一个InputStream对象实例。
(6)getOutputStream函数

连接的另一端将得到输入,同时返回一个OutputStream对象实例。

创建java线程

(1)继承Thread类
新建一个类并继承Thread类,重写Thread类中的run()方法。完成编写后,创建一个此类的实例,并调用start()方法,此时,jvm会创建一个新线程并执行run()方法中的代码。
(2)实现Runnable方法
新建一个类并实现Runnable接口,重写Runnable接口中的run()方法。完成编写后,调用Thread类的构造方法,并传入上述类的一个实例作为参数创建一个Thread类的实例,之后再调用start()方法。

通信传输协议

TCP通信:
TCP三次握手的过程如下:
(1)客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。
(2)服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。
(3)客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。
三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

UDP通信:
UDP是一个无连接协议,传输数据之前源端和终端不建立连接,当它想传送时就简单地去抓取来自应用程序的数据,并尽可能快地把它扔到网络上。在发送端,UDP传送数据的速度仅仅是受应用程序生成数据的速度、计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

socket编程模板

客户机编程模板

  1. 创建套接字(Socket)并连接到远程服务器
  2. 创建绑定到套接字上的网络输入流与输出流
  3. 根据服务器协议,在网络流上进行读写操作
  4. 关闭并销毁网络流
  5. 关闭并销毁套接字

服务器编程模板
6. 创建侦听套接字A(ServerSocket)并绑定到服务器的某一地址和端口(注意:这个套接字作用是监听,如果关闭,那么就相当于服务器停止了,如果要创建多个线程来处理多个客户机传来的套接字,记得不要关掉)
7. 侦听套接字A负责侦听等待并处理新客户机连接
8. 在接受新连接的同时,服务器会创建一个新套接字B用来接收客户机传来的套接字(Socket)(处理完后记得关)
9. 创建绑定到套接字B上的网络输入流与输出流
10. 根据服务器协议,在网络流上进行读写操作
11. 关闭并销毁网络流
12. 关闭并销毁侦听套接字和所有会话套接字

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值