客户端:
sfd=socket(AF_INET,SOCK_STREAM,0)
socket(
int domain: AF_INET 、 AF_INET6
int type: SOCK_STREAM 、 SOCK_DGRAM
int protocol: 0
)
成功:返回fd 失败:-1
********************************************************************************
struct sockaddr{
sa_family_t sa_family: AF_INET 、 AF_INET6
char sa_data[14]: IP地址[4]+端口号[2]+保留位[8]
}
struct sockaddr_in{
sa_family_t sa_family: AF_INET 、 AF_INET6
in_port_t sin_port: 端口号
struct in_addr sin_addr: IP地址
unsigned char sin_zero[8]:保留位
}
IP地址结构体:
struct in_addr{
in_addr_t s_addr: inet_addr(argv[1])
}
********************************************************************************
ret=connect(sfd,(struct sockaddr*)&saddr,sizeof(saddr) )
connect(
int sockfd: fd
const struct sockaddr* addr: &saddr
socklen_t addrlen: sizeof(saddr)
)
失败:返回值小于0
********************************************************************************
pthread_create( &pid, NULL, sndmsg, (void*)sfd )
pthread_create(
pthread_t * thread :&pid
const pthread_attr_t *attr: NULL (线程属性,取默认值)
void*(*start_routine) (void*): getmsd 、 sndmsg (线程函数名)
void *arg: (void*)fd (线程函数传参)
)
********************************************************************************
read(fd,buf,sizeof(buf))
********************************************************************************
printf("Please input message:")
********************************************************************************
fgets(buf,sizeof(buf),stdin)
********************************************************************************
write(fd,buf,strlen(buf))
********************************************************************************
fflush(stdout)
********************************************************************************
memset(buf,0,sizeof(buf))
********************************************************************************
inet_addr("192.168.1.111")
********************************************************************************
strlen(buf) 检索,直到遇到'\0'停止,返回检索个数
********************************************************************************