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;
}