黑马程序员c语言socket编程视频,视频学习笔记之socket编程

当开发客户端与服务器端应用程序时,就一定会与网络通信打交道,那么编程中是怎么实现网络通信的呢?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的应用模式:

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

新建位图图像.jpg (38.23 KB, 下载次数: 7)

2013-9-16 18:41 上传

1.  服务器端welcoming socket开始监听端口(负责监听客户端连接信息)。

2.  客户端client socket连接服务器指定端口(负责接收和发送服务端消息)。

3.  服务器端welcoming socket监听到客户连接,创建connection socket(负责和客户端通信)。

注意:服务器端的socket(至少需要两个)一个负责接收客户端的连接。每接收到一个客户端的连接便在服务端产生一个对应的socket。

1.  在接收到客户端连接时创建。(但不负责与客户端通信)

2.  为每个连接成功的客户端请求在服务器端创建一个对应的socket。(负责与客户端通信)

客户端的socket。

1.  必须指定要连接的服务端地址和端口。

2.  通过创建一个socket对象来初始化一个到服务器端得tcp连接。

Socket通信过程:

再上一图

b5b0b1954d7b1b86a4242bbd9d0c05eb.gif

1.jpg (62.6 KB, 下载次数: 4)

2013-9-16 18:47 上传

服务器端:

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:}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值