18,364
社区成员




#include <sys/socket.h> //connect,send,recv,setsockoptµÈ
#include <sys/types.h>
#include <netinet/in.h> // sockaddr_in, "man 7 ip" ,htons
#include <poll.h> //poll,pollfd
#include <arpa/inet.h> //inet_addr,inet_aton
#include <unistd.h> //read,write
#include <netdb.h> //gethostbyname
#include <error.h> //perror
#include <stdio.h>
#include <errno.h> //errno
#include <stdlib.h>
#include <string.h> // memset
#include <apueeroor.h>
#define MAXLINE 4096
#define EHCO_PORT 9877
#define BOOL unsigned char
int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr;
if(argc != 2)
err_quit("usage: udpcli <IPaddress>");
bzero(&servaddr, sizeof(servaddr));
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bool optval=true;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,(char*)&optval,sizeof(bool));//设置为广播模式
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(EHCO_PORT);
inet_pton(AF_INET, argv[1], &servaddr.sin_addr);
int n;
char sendline[MAXLINE]="", recvline[MAXLINE + 1];
while (fgets(sendline, MAXLINE, stdin) != NULL) {
sendto(sockfd, sendline, strlen(sendline), 0, (struct sockaddr *) &servaddr, sizeof(servaddr));
n = recvfrom(sockfd, recvline, MAXLINE, 0, NULL, NULL);
recvline[n] = 0; /* null terminate */
fputs(recvline, stdout);
//exit(0);
}
}
#include <sys/socket.h> //connect,send,recv,setsockopt绛?
#include <sys/types.h>
#include <netinet/in.h> // sockaddr_in, "man 7 ip" ,htons
#include <poll.h> //poll,pollfd
#include <arpa/inet.h> //inet_addr,inet_aton
#include <unistd.h> //read,write
#include <netdb.h> //gethostbyname
#include <error.h> //perror
#include <stdio.h>
#include <errno.h> //errno
#include <stdlib.h>
#include <string.h> // memset
#define MAXLINE 4096
#define EHCO_PORT 9877
int
main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in servaddr, cliaddr;
sockfd = socket(AF_INET, SOCK_DGRAM, 0);
bzero(&servaddr, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
servaddr.sin_port = htons(EHCO_PORT);
bool optval=true;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,(char*)&optval,sizeof(bool));//设置为广播模式
bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr));
int n;
socklen_t len;
char mesg[MAXLINE];
for ( ; ; ) {
len = sizeof(cliaddr);
n = recvfrom(sockfd, mesg, MAXLINE, 0, (struct sockaddr *) &cliaddr, &len);
mesg[n]=0; /* null terminate */
if(strcmp(mesg, "close\n") ==0){close(sockfd);break;}
fputs(mesg, stdout);
sendto(sockfd, mesg, n, 0, (struct sockaddr *) &cliaddr, len);
}
close(sockfd);
return 0;
}
bool optval=true;
setsockopt(sockfd,SOL_SOCKET,SO_BROADCAST,(char*)&optval,sizeof(bool));//设置为广播模式
int yes=1;
setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &yes, sizeof(yes));