当开发客户端与服务器端应用程序时,就一定会与网络通信打交道,那么编程中是怎么实现网络通信的呢?socket就是实现方法。下面是根据视频学习的一些关于socket网络编程的一些总结,可能限于知识面所以写得不够深入,如果小伙伴们对socket编程有更好的见解的话也希望不吝赐教哦。欢迎讨论哈{:soso_e100:} Socket网络编程: 1.Socket作为进程通信机制,同城称为“套接字”,用于描述ip地址和端口,是一个通信链的句柄(两个程序通信用的)。 2.socket非常类似于电话的插座。以一个电话网为例,电话的通信双方相当互相与通信的2个应用程序,电话号码就是ip地址,任何用户通话之前首先要占用一部电话机,相当于申请一个socket;同时要知道对方的号码,相当于对方有一个固定的socket。然后向对方拨号呼叫,相当于发出连接请求。对方如果在场并空闲,拿起电话话筒,双方就可以正式通话了,相当于连接成功。双方通话的过程,是一方向电话机发出信号对方从电话机接收信号的过程,相当于向socket发送数据和从socket接收数据。通话结束后一方挂掉电话相当于关闭socket,撤销连接。 Socket相关概念: .在intelnet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开了一个socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。 .例如:http使用80端口,ftp使用的21端口和smtp使用的23端口。 .有两种类型: 1. 流式socket(stream):是一种面向连接的socket,针对于面向连接的tcp服务应用,安全但效率低。 2. 数据报式socket(datagram):是一种无连接的socket,对应于无连接的udp应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高。 Socket一般应用模式(服务器端和客户端): 我们可以通过一幅图来了解socket的应用模式:
1. 服务器端welcoming socket开始监听端口(负责监听客户端连接信息)。 2. 客户端client socket连接服务器指定端口(负责接收和发送服务端消息)。 3. 服务器端welcoming socket监听到客户连接,创建connection socket(负责和客户端通信)。 注意:服务器端的socket(至少需要两个)一个负责接收客户端的连接。每接收到一个客户端的连接便在服务端产生一个对应的socket。 1. 在接收到客户端连接时创建。(但不负责与客户端通信) 2. 为每个连接成功的客户端请求在服务器端创建一个对应的socket。(负责与客户端通信) 客户端的socket。 1. 必须指定要连接的服务端地址和端口。 2. 通过创建一个socket对象来初始化一个到服务器端得tcp连接。 Socket通信过程: 再上一图
服务器端: 1. 申请一个socket 2. 绑定到一个ip地址和一个端口上 3. 开启侦听,准备接受连接 客户端: 1. 申请一个socket 2. 连接服务器(指明ip地址和端口号) 服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原侦听socket继续侦听。 Socket方法: 相关类:ipaddress类:包含一个ip地址。 Ipendpoint类:包含了一个ip地址和端口号。 方法: Socket()创建一个socket。 Bind()绑定一个本地的ip和端口号(ipendpoint)。 Listen()让socket侦听传入的连接尝试,并指定侦听队列的容量。 Connect()初始化与另一个socket的连接。 Accept()接收连接并返回一个新的socket。 Send()输出数据到socket。 Recive()从socket中读取数据。返回接收到的数据的长度。 Close()关闭socket(销毁连接)。 最后,版主大人,技术分哦,别忘了哦亲{:soso_e113:} |