1、实现服务器端/客户端本机通信程序;
2、修改客户端程序,发送用户从键盘录入的信息;
3、修改第2步的客户端程序,向任意IP地址和端口发送数据(用户录入);
//Unet.h
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<pthread.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<unistd.h>
#include<sys/wait.h>
#include <arpa/inet.h>
#define MAXDATASIZE 256
//U2server.c
#include "Unet.h"
int port=10086;
int main()
{
int sockfd,len,z;
char buf[MAXDATASIZE];
struct sockaddr_in adr_inet;
struct sockaddr_in adr_clnt;
printf("wait client\n");
adr_inet.sin_family=AF_INET;
adr_inet.sin_port=htons(port);
adr_inet.sin_addr.s_addr=htonl(INADDR_ANY);
bzero(&(adr_inet.sin_zero),8);
len=sizeof(adr_clnt);
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
perror("socket error!");
exit(1);
}
z=bind(sockfd,(struct sockaddr *)&adr_inet,sizeof(adr_inet));
if(z==-1)
{
perror("bind errro!");
exit(1);
}
while(1)
{
z=recvfrom(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_clnt,&len);
if(z<0)
{
perror("recvfrom error!");
exit(1);
}
buf[z]='\0';
printf("recive:%s",buf);
}
close(sockfd);
exit(0);
}
//U2client.c
#include "Unet.h"
#define SERVPORT 10086
#define BACKLOG 10
int main(int argc,char *argv[])
{
int sockfd,i=0,z;
char buf[80],str1[180];
struct hostent *host;
struct sockaddr_in adr_server;
if((host=gethostbyname(argv[1]))==NULL)
{
perror("gethostbyname error!");
exit(1);
}
printf("Link server port...\n");
adr_server.sin_family=AF_INET;
adr_server.sin_port=htons(SERVPORT);
adr_server.sin_addr=*((struct in_addr *)host->h_addr);
bzero(&(adr_server.sin_zero),8);
sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1)
{
perror("socket error!");
exit(1);
}
printf("send file....\n");
while(1)
{
fgets(buf,sizeof(buf),stdin);
z=sendto(sockfd,buf,sizeof(buf),0,(struct sockaddr *)&adr_server,sizeof(adr_server));
if(z<0)
{
perror("sendto error!");
exit(1);
}
memset(buf,0,sizeof(buf));
}
close(sockfd);
exit(0);
}