📄 talker_utils.c,v
字号:
head 1.2;access;symbols;locks; strict;comment @ * @;1.2date 2002.07.26.19.42.03; author rbraud; state Exp;branches;next 1.1;1.1date 2002.07.25.20.41.45; author rbraud; state Exp;branches;next ;desc@@1.2log@New function to disconnect from the talker@text@#include <sys/socket.h>#include <arpa/inet.h>#include <netdb.h>#include <stdio.h>#include <unistd.h>#include <string.h>#include "talker_utils.h"static int sock = -1;static struct sockaddr_in talker_addr;double estimate_rtt_wrapper(struct sockaddr_in their_addr) { char ping_info[6]; double ping_time = 40000; if(sock <= 0) { printf("Talker-utils: WARNING: estimate_rtt_wrapper() called but talker location not defined\n"); return 40000; } memcpy(ping_info, &their_addr.sin_addr.s_addr, sizeof(their_addr.sin_addr.s_addr)); memcpy(&ping_info[4], &their_addr.sin_port, sizeof(their_addr.sin_port)); if(send(sock, ping_info, 6, 0) < 0) { printf("Talker-utils: Send failed\n"); return 40000; } if(recv(sock, ping_info, 6, 0) < 0) { printf("Talker-utils: Error receiving ping response\n"); return 40000; } ping_time = (float)ntohl(*((long*)ping_info)); return ping_time;}int setup_talker(char* hostname, short port) { struct hostent* h; if((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) { printf("Talker-utils: Could not create socket for talker\n"); return -1; } h = gethostbyname(hostname); if(h == 0x0) { printf("Talker-utils: Could not resolve talker hostname\n"); return -1; } memset(&talker_addr, 0, sizeof(talker_addr)); talker_addr.sin_family = AF_INET; talker_addr.sin_addr = *((in_addr*)h->h_addr_list[0]); talker_addr.sin_port = htons(port); if(connect(sock, (struct sockaddr*)&talker_addr, sizeof(talker_addr)) < 0) { printf("Talker-utils: Could not connect to talker\n"); return -1; } return 0;}int disconnect_talker() { char bye[] = "bye"; if(sock < 0) { printf("Talker-utils: WARNING: disconnect_talker() called on an unconnected socket\n"); return 0; } if(send(sock, bye, strlen(bye), 0) < 0) { printf("Talker-utils: Error disconnecting from talker\n"); } return close(sock);}@1.1log@Initial revision@text@d5 1a35 1 printf("currently the socket is %d\n", sock);d54 13@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -