?? udp-client.c
字號(hào):
/*客戶端程序代碼:先建立一個(gè)UDP套接字,然后使用循環(huán)將命令行傳進(jìn)來(lái)的字符串通過(guò)UDP套接字依次傳送給服務(wù)器*/
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<stdio.h>
#include<unistd.h> /*close()*/
#include<string.h> /*memset()*/
#include<sys/time.h> /*select()*/
#define REMOTE_SERVER_PORT 1500
#define MAX_MSG 100
int main(int argc,char *argv[]){
int sd,rc,i;
struct sockaddr_in cliAddr,remoteServAddr;
struct hostent *h;
/*check command line args*/
if(argc<3){
printf("usage:%s <server><data1>...<data N>\n",argv[0]);
exit(1);
}
/*get server IP address(no check if input is IP address or DNS name)*/
h=gethostbyname(argv[1]);
if(h==NULL){
printf("%s:unkonwn host '%s'\n",argv[0],argv[1]);
exit(1);
}
printf("%s:sending data to '%s'(IP:%s)\n",argv[0],h->h_name,inet_ntoa(*(struct in_addr*)h->h_addr_list[0]));
remoteServAddr.sin_family=h->h_addrtype;
memcpy((char*)&remoteServAddr.sin_addr.s_addr,h->h_addr_list[0],h->h_length);
remoteServAddr.sin_port=htos(REMOTE_SERVER_PORT);
/*socket creation*/
sd=socket(AF_INET,SOCK_DGRAM,0);
if(sd<0){
printf("%s:cannot open socket \n",argv[0]);
exit(1);
}
/*bind any port*/
cliAddr.sin_family=AF_INET;
cliAddr.sin_addr.s_addr=htonl(INADDR_ANY);
cliAddr.sin_port=htons(0);
rc=bind(sd,(struct sockaddr*)&cliAddr,sizeof(cliAddr));
if(rc<0){
printf("%s:cannot bind port\n",argv[0]);
exit(1);
}
/*send data*/
for(i=2;i<argc;i++){
rc=sendto(sd,argv[i],strlen(argv[i]+1),0,());
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -