1、创建服务器。
在计算机的发展中,前人种树后人乘凉的原因有了很多的函数可以用,这件是变得简单了起来。
建立sock套接字---->创建一个具有网络属性的文件描述符
socket
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int socket(int domain, int type, int protocol);
功能:
建立sock套接字
参数:
domain:地址族
AF_UNIX, AF_LOCAL Local communication unix(7) 本地连接协议
AF_INET IPv4 Internet protocols ip(7) IPv4协议
AF_INET6 IPv6 Internet protocols ipv6(7) IPv6协议
type:协议
SOCK_STREAM:流式套接字(TCP)
SOCK_DGRAM: 数据报文套接字(UDP)
SOCK_RAW: 原始套接字 不选用任何协
protocol:参数生效值
默认为:0 --->前两个参数生效
返回值:
成功返回 套接字文件描述符(重点)。
失败返回-1,并设置错误码
例如:
int sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd<0){
perror("socket");
return -1;
}
第一个参数用IPv4协议的参数。IPv4协议是一个32位的二进制数组成的地址,因为实现了“复用”功能所以普及率比IPv6高,所以你现在用的就是IPv4类地址。
第二个参数,因题目要求所以用到了TCP的参数
第三个参数默认 0 。
---------------------------------------------------------------------------------------------------------
绑定IP和端口号 ---->网络编程最难部分
bind
#include <sys/types.h> /* See NOTES */
#include <sys/socket.h>
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
功能:
绑定IP和端口号
参数:
sockfd:套接字文件描述符
addr:struct sockaddr * 赋值的结构体指针
addrlen:addr的长度
返回值:
成功返回0
失败返回-1,并设置错误码
*为什么称作最难,那是因为第二个参数 结构体 。接下来就说一下那个结构体。
原结构体
struct sockaddr {