Linuxc之基於UDP通訊程式設計
阿新 • • 發佈:2019-01-27
Client.c
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<errno.h>
#include<sys/types.h>
#include<netdb.h>
#include<sys/socket.h>
int port=8888;
int main()
{
int sockfd;
int i=0;
int ret;
char buf[80],str1[80];
struct sockaddr_in adr_srvr; //the address of server
//ILE *fp;
/*以只讀的方式開啟liu檔案*/
/*=fopen("test","r");
if(fp==NULL)
{
perror("fopen error:");
exit(1);
}*/
printf("client : connecting server ...\n");
/* 建立IP地址 */
adr_srvr.sin_family=AF_INET;//TCP/IP family
adr_srvr.sin_port=htons(port);//port
//adr_srvr.sin_addr.s_addr = htonl(INADDR_ANY);//local IP
inet_pton(AF_INET, "192.168.1.11",&adr_srvr.sin_addr.s_addr);
bzero(&(adr_srvr.sin_zero),8);
sockfd=socket(AF_INET,SOCK_DGRAM,0);//UDP
if(sockfd==-1)
{
perror("create socket error:");
exit(1);
}
/* 讀取三行資料,傳給udpserver*/
for(i=0;i<3;i++)
{
fgets(str1,80,stdin);
printf("client sending:");
printf("%d:%s",i,str1);
sprintf(buf,"%d:%s",i,str1);
ret=sendto(sockfd,buf,sizeof(buf),0,\
(struct sockaddr *)&adr_srvr, sizeof(adr_srvr));
if(ret<0)
{
perror("sendto error:");
exit(1);
}
}
sprintf(buf,"stop\n"); //send "stop" to server
ret=sendto(sockfd,buf,sizeof(buf), 0, \
(struct sockaddr *)&adr_srvr, sizeof(adr_srvr));
if(ret<0)
{
perror("sendto error");
exit(1);
}
//fclose(fp);
close(sockfd);
exit(0);
}