init_tcp_sock(char *ip, int port, int type)
{
int sockfd;
struct sockaddr_in addr;
int addr_size;
sockfd=socket(AF_INET, SOCK_STREAM, 0);
if(sockfd== -1)
{
perror("call to socket");
exit(1);
}
bzero(&addr, sizeof(addr));
addr.sin_family = AF_INET;
if (ip == NULL) {
addr.sin_addr.s_addr = htonl(INADDR_ANY);
}
else {
addr.sin_addr.s_addr = inet_addr(ip);
}
addr.sin_port=htons(port);
if(type == 0)//servr
{
if(bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) ==-1)
{
perror("call to bind");
exit(1);
}
if(listen(sockfd, 20) == -1) //在端口sock_descriptor监听
{
perror("call to listen");
exit(1);
}
}
else{ //client
if(connect(sockfd, (void *)&addr, sizeof(addr))==-1)
{
perror("Error connecting to socket \n");
exit(1);
}
}
return sockfd;
}
本文介绍了一个用于初始化TCP套接字的C函数init_tcp_sock。该函数接受IP地址、端口号和类型作为参数,并根据传入的参数创建客户端或服务器套接字。文章详细展示了如何使用socket、bind、listen和connect等系统调用。
4666

被折叠的 条评论
为什么被折叠?



