客户端实现
1、注:客户端实现中可以不用bind地址,当你发送数据到指定服务端时,操作系统会为客户端自动分配端口
int main()
{
int sockfd = socket(PF_INET, SOCK_DGRAM, 0);
if(sockfd == -1) {
printf("create socket error: %s(errno: %d)\n", strerror(errno), errno);
return -1;
}
struct sockaddr_in remote_addr;
remote_addr.sin_family = AF_INET;
remote_addr.sin_port = htons(8888);
remote_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
socklen_t remote_addr_len = sizeof(remote_addr);
char input_buf[BUFF_SIZE] = {0};
int nrecv = 0;
while(1) {
printf("Input: ");
scanf("%s", input_buf);
sendto(sockfd, input_buf, strlen(input_buf), 0, (struct sockaddr*)&remote_addr, sizeof(remote_addr));
nrecv = recvfrom(sockfd, input_buf, BUFF_SIZE, 0, (struct sockaddr*)&remote_addr, &remote_addr_len);
if(nrecv > 0) {
input_buf[nrecv] = '\0';
printf("nrecv = %d\n", nrecv);
printf("remote ip: %s\n", inet_ntoa(remote_addr.sin_addr));
printf("remote port: %d\n", ntohs(remote_addr.sin_port));
printf("recv msg: %s\n", input_buf);
}
}
close(sockfd);
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)