struct in_addr{
union{
struct{u_char, s_b1, s_b2, s_b3, s_b4} s_un_b;
struct{u_short s_w1, s_s2;} s_un_w;
u_long s_addr;
} s_un;
}
struct sockaddr_in{
short sin_family; //AF_INET
u_short sin_port; //16位端口号
struct in_addr sin_addr; //32位IP地址
char sin_zero[8];
};
struct sockaddr{
unsigned short sa_family;
char sa_data[14];
};
in_addr test;
test..s_un_b.s_b1=192;
test..s_un_b.s_b2=168;
test..s_un_b.s_b3=0;
test..s_un_b.s_b4=1;
struct sockaddr_in serverAddr;
memst(&serverAddr,0,sizeof(struct sockaddr_in));
serverAddr.sin_family=AF_INET; //AF_INET表示TCP
serverAddr.sin_port=htons(80);
serverAddr.sin_addr.s_addr=htonl(INADDR_ANY); //INADDR_ANY表示当前所用的IP

#incldue<sys/socket.h>
//创建套接字
SOCKET PASCAL FAR socket(int af, int type, int protocol)
//af指定通信协议--AF_UNIX,AF_INET,AF_NS
//type指定套接字类型,SOCK_STREAM(TCP),SOCK_DGRAM(UDP),SOCK_RAM(原始套接字)
//protocol指定特定协议
//套接字绑定
int PASCAL FAR bind(SOCKET s, const struct sockaddr FAR *name, int namelen)
//s指定要关联的套接字
//name指定要绑定的IP地址与端口信息
//侦听
int PASCAL FAR listen(SOCKET s, int backlog)
//backlog指定请求连接队列的最大长度,一般设为5
//侦听,接受数据
SOCKET PASCAL FAR accept(SOCKET s, struct sockaddr FAR* addr, int FAR* addrlen)
//s为当前指定的套接字
//addr为保存当前客户端的地址信息
//创建连接
int PASCAL FAR connect(SOCKET s, const struct sockaddr FAR* name, int namelen)
//TCP发送数据
int PASACAL FAR send(SOCKET s, const char FAR* buf, int len, int flags);
//s指定已经连接的套接字
//buf表示待发送数据的缓冲区
//flags用于设定发送控制参数,一般为0
//TCP接受数据
int PASACAL FAR recv(SOCKAET s,char FAR* buf,int len,int flags);
//UDP发送数据
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen)
ssize_t recvform(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *from, socklen_t fromlen)
//sockfd表示已经创建好的一个UDP套接字
//to.from用于设置接受方和发送方的地址信息
//tolen,fromlen用于设置地址信息的长度
