Linux网络编程基础实验(6)
时间:2025-04-21
时间:2025-04-21
了解SOCKET编程,熟悉C/S模式服务器和客户端。
EOPNOTSUPP 指定的socket并未支援listen模式。
(4)connect(建立socket连接)
相关函数 socket,bind,listen
表头文件 #include<sys/types.h>
#include<sys/socket.h>
定义函数 int connect (int sockfd,struct sockaddr * serv_addr,int addrlen);
函数说明 connect()用来将参数sockfd 的socket 连至参数serv_addr 指定的网络地址。结构
sockaddr请参考bind()。参数addrlen为sockaddr的结构长度。
返回值 成功则返回0,失败返回-1,错误原因存于errno中。
错误代码 EBADF 参数sockfd 非合法socket处理代码
EFAULT 参数serv_addr指针指向无法存取的内存空间
ENOTSOCK 参数sockfd为一文件描述词,非socket。
EISCONN 参数sockfd的socket已是连线状态
ECONNREFUSED 连线要求被server端拒绝。
ETIMEDOUT 企图连线的操作超过限定时间仍未有响应。
ENETUNREACH 无法传送数据包至指定的主机。
EAFNOSUPPORT sockaddr结构的sa_family不正确。
EALREADY socket为不可阻断且先前的连线操作还未完成。
(5)accept(接受socket连线)
相关函数 socket,bind,listen,connect
表头文件 #include<sys/types.h>
#include<sys/socket.h>
定义函数 int accept(int s,struct sockaddr * addr,int * addrlen);
函数说明 accept()用来接受参数s的socket连线。参数s的socket必需先经bind()、listen()
函数处理过,当有连线进来时accept()会返回一个新的socket处理代码,往后的数
据传送与读取就是经由新的socket处理,而原来参数s的socket能继续使用accept()
来接受新的连线要求。连线成功时,参数addr所指的结构会被系统填入远程主机
的地址数据,参数addrlen为scokaddr的结构长度。关于结构sockaddr的定义请参
考bind()。
返回值 成功则返回新的socket处理代码,失败返回-1,错误原因存于errno中。
错误代码 EBADF 参数s 非合法socket处理代码。
EFAULT 参数addr指针指向无法存取的内存空间。
ENOTSOCK 参数s为一文件描述词,非socket。
EOPNOTSUPP 指定的socket并非SOCK_STREAM。
EPERM 防火墙拒绝此连线。
ENOBUFS 系统的缓冲内存不足。
ENOMEM 核心内存不足。
(6)send(经socket传送数据)
上一篇:用友系列产品报价表
下一篇:牙龈萎缩的治疗方法是什么