/*************************************************************************************************
**File: client.c
**Author: FreeKing
**Created: Augist 11th 2009
**Description: UDP协议的客户端的实现
*************************************************************************************************/
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <errno.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define PORT 6000
#define max 100
int main( int argc, char* *argv)
{
int sockfd;
struct sockaddr_in my_addr;
struct sockaddr_in their_addr ;
int addr_len;
int numbytes;
if( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
perror("socket error!");
exit(1);
}
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(PORT );//主机端口号
my_addr.sin_addr.s_addr = INADDR_ANY;
bzero( &( my_addr.sin_zero), 8 );
//绑定套接字
if(bind(sockfd, (struct sockaddr* )&my_addr, sizeof( struct sockaddr) ) == -1 )
{
perror( "bind出错!" );
exit(1);
}
char recvbuf[100];
addr_len = sizeof( struct sockaddr );
//接收数据
if( (numbytes = recvfrom(sockfd, recvbuf, 100, 0, (struct sockaddr *)&their_addr, &addr_len)) == -1)
{
perror( "recvfrom error!" );
exit(1);
}
//显示接收到的数据
printf( "got packet from %s/n", inet_ntoa(their_addr.sin_addr));
printf( "packet is %d bytes long/n", numbytes );
recvbuf[numbytes] = '/0';
printf("packet contains: %s /n", recvbuf);
close(sockfd);
}
/*************************************************************************************************
**File: client.c
**Author: FreeKing
**Created: Augist 11th 2009
**Description: UDP协议的客户端的实现
*************************************************************************************************/
#include <netdb.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <errno.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define PORT 6000
int main( int argc, char* *argv)
{
int sockfd;
int ret;
int numbytes;
struct sockaddr_in their_addr ;
if( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
{
perror("socket error!");
exit(1);
}
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(PORT );//主机端口号
//their_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
their_addr.sin_addr.s_addr = INADDR_ANY;
bzero( &(their_addr.sin_zero), 8 );
char sendbuf[100];
//发送一行数据
fgets(sendbuf,100,stdin);
if( (numbytes = sendto( sockfd, sendbuf,strlen(sendbuf), 0, (struct sockaddr*)&their_addr,
sizeof(struct sockaddr))) == -1)
{
perror("sendto error !");
exit(1);
}
printf("sent %d bytes to %s/n", numbytes, inet_ntoa(their_addr.sin_addr) );
close(sockfd);
return 0;
}