socket编程:客户端与服务器间的连接以及各函数的用法
在认真的看UNP之前,一直被socket编程说的云里雾里,今天我要让大家从整天上认识socket编程,让我们知道socket编程的整个流程和各个函数的用法。这样:我们在写一些简单的socket编程时就不用被那么多函数和调用顺序所迷惑了。下面看UNP书上给的图片描述的建立连接的过程,看了之后一目了然!
1.建立连接的概括图
2.各个函数的用法:
(1).socket()
包含文件:#inlcude<sys/socket.h>
函数原型:int socket(int family, int type, int protocol);
参数说明:
a. family:一般为AF_INET(IPV4协议)
b. type : SOCK_STREAM(字节流套接字)
SOCK_DGRAM(数据报套接字)
SOCK_SEQPACKET(有序分组套接字)
SOCK_RAW(原始套接字)
c. protocol:IPPROTO_TCP(TCP传输协议)
IPPROTO_UDP(UDP传输协议)
IPPROTO_SCTP( SCTP传输协议)
返 回:若成功则为非负描述符,若出错则为-1;
功 能:指定期望的通信协议类型(使用IPV4的TCP,使用IPV6的UDP,UNIX域字节流协议)。
(2) . bind()
包含文件:#include<sys/socket>
函数原型:int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen);
参数说明:
a. sockfd: 套接字描述符
b. myaddr: 指向特定于协议的地址结构指针
c. addrlen: 地址结构的长度。
返 回:若成功返回0,若出错则返回-1。
功 能:把一个本地协议赋予一个套接字。对于网际网协议,协议地址是32为的IPV4地址或128位的IPV6地址与16位的TCP或UDP端口号的组合。
(3) . listen()
包含文件:#include<sys/socket.h>
函数原型:int listen(int sockfd, int backlog);
参数说明:
a. sockfd: 套接字描述符
b. baklog: (待研究,一般给默认值)
返 回:若成功为0,若出错则为-1。
功 能:仅由TCP服务器调用,listen将一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的请求。
(4) . accept()
包含文件:#include<sys/socket.h>
函数原型:int accept(int sockfd, struct sockaddr *cliaddr, socklen_t *addrlen);
参数说明:
a. sockfd: 监听套接字描述符(由socket创建,随后用作bind和listen的第一个参数的描述符)
b. cliaddr: 指向套接字地址结构的指针
c. addrlen:指向套接字地址结构的大小
返 回:返回一个已连接套接字描述符。监听套接字描述符整个服务器期间只建立一个,而已连接套接字会有多个,对应相应的进程。
功 能:用于从已完成连接队列队头返回下一个已完成连接,如果已完成队列连接队列为空,那么进程被投入睡眠(即阻塞)
(5) . connect()
包含文件:#include<sys/socket.h>
函数原型:int connect(int sockfd, struct sockaddr *servaddr, socklen_t *addrlen);
参数说明:
a. sockfd: 监听套接字描述符
b. cliaddr: 指向
返 回:若成功为0,若出错则为-1
功 能:仅由TCP服务器调用,listen将一个未连接的套接字转换成一个被动套接字,指示内核应该接受指向该套接字的请求。
(6). close()
包含文件:#include<unistd.h>
函数原型:int close(int sockfd);
参数说明:sockfd:要关闭的套接字的描述符
返 回:若成功为0,若出错则为-1
功 能:关闭套接字,并终止TCP连接。返回调用进程
socket编程:客户端与服务器间的连接以及各函数的用法的更多相关文章
- Windows Socket 编程_单个服务器对多个客户端简单通讯
单个服务器对多个客户端程序: 一.简要说明 二.查看效果 三.编写思路 四.程序源代码 五.存在问题 一.简要说明: 程序名为:TcpSocketOneServerToMulClient 程序功能:实 ...
- 【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信.首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类 ...
- android下socket编程问题:服务器关闭时,客户端发送请求的异常处理
我用socket分别创建了一个服务器和一个客户端. 当服务器程序运行时,客户端和服务器发送接收数据是OK的. 但是,如果服务器程序关闭以后,客户端仍然发送请求的话,会抛出一个IOException.但 ...
- TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题
使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...
- Socket编程——客户端,服务器端的读写操作
URL网络编程,最大的特征就是一对一的响应! 1:客户端“写”,服务器端用于“读” package coreBookSocket2; import java.io.InputStreamReader; ...
- Java网络编程客户端和服务器通信
在java网络编程中,客户端和服务器的通信例子: 先来服务器监听的代码 package com.server; import java.io.IOException; import java.io.O ...
- socket编程和并发服务器
socket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket. 在TCP协议中,建立连接的两个进程 ...
- socket编程实现tcp服务器_C/C++
1. 需求分析 实现一个回声服务器的C/S(客户端client/服务器server)程序,功能为客户端连接到服务器后,发送一串字符串,服务器接受信息后,返回对应字符串的大写形式给客户端显示. 例如: ...
- 利用Python中SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信 版权声明 本文转自:http://blog.csdn.net/cnmilan/article/details/9664823 ...
随机推荐
- Android 布局
转自:http://www.cnblogs.com/chiao/archive/2011/08/24/2152435.html Android布局是应用界面开发的重要一环,在Android中,共有五种 ...
- 《3D数学基础:图形与游戏开发》勘误
最近读这本书,读到四元素的乘法时,自己推导了一下公式,然后懵了,多方查阅,确定是书籍中的笔误(我读的是中文翻译版): 具体在Page147: 上图所示,在第二处明显与第一处的公式不一样. 在维基百科上 ...
- 2.添加键盘钩子。向进程中注入dll
学习笔记 1.首先要建立mfc的动态链接库.在def文件中放入要导出的函数名. 2.添加函数如下 //安装钩子 //HHOOK SetWindowsHookEx( // int idHook,//钩子 ...
- IntelliJ IDEA 14
新接触IntelliJ IDEA 14,使用起来还不是很称手,每天在使用中学习吧. 每学到一个新技能就来更新一下. (2015.11.17) " Ctrl + / " 代码批量注释 ...
- 快速打出System.out.println("");
sysout---->Alt+/--->System.out.println():
- iOS 延迟执行代码
//延迟执行 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)( * NSEC_PER_SEC)),dispatch_get_main ...
- iOS支付 IPAPayment demo iTunes Conection里面添加测试帐号,添加商品,实现购买过程
https://github.com/ccguo/IAPPaymentDemo 发一个demo
- 查看sql语句执行时间/测试sql语句性能
写程序的人,往往需要分析所写的SQL语句是否已经优化过了,服务器的响应时间有多快,这个时候就需要用到SQL的STATISTICS状态值来查看了. 通过设置STATISTICS我们可以查看执行SQL时的 ...
- javascript基础学习(六)
javascript之对象 学习要点: 对象的属性和方法 对象的原型 一.对象 对象其实就是一种引用类型,而对象的值就是引用对象的实例. 二.创建对象 在javascript中有两种对象,一种是系统内 ...
- mac 下maven的安装
最近在学习mahout,这些安装相关软件的步骤先记下来,避免以后忘记. 1.首先在mac上查看本机的java版本,如果没有需要自己去安装: 我的电脑上安装的java是1.7.0_79 2.在http: ...