server.c:
#include <sys/types.h> /* see notes */
#include <sys/socket.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdio.h>
#include <signal.h>
/* socket
* bind
* sendto/recvfrom
*/
#define server_port 8888
int main(int argc, char **argv)
{
int isocketserver;
int isocketclient;
struct sockaddr_in tsocketserveraddr;
struct sockaddr_in tsocketclientaddr;
int iret;
int iaddrlen;
int irecvlen;
unsigned char ucrecvbuf[1000];
int iclientnum = -1;
isocketserver = socket(af_inet, sock_dgram, 0);
if (-1 == isocketserver)
printf("socket error!\n");
return -1;
}
tsocketserveraddr.sin_family = af_inet;
tsocketserveraddr.sin_port = htons(server_port); /* host to net, short */
tsocketserveraddr.sin_addr.s_addr = inaddr_any;
memset(tsocketserveraddr.sin_zero, 0, 8);
iret = bind(isocketserver, (const struct sockaddr *)&tsocketserveraddr, sizeof(struct sockaddr));
if (-1 == iret)
printf("bind error!\n");
while (1)
iaddrlen = sizeof(struct sockaddr);
irecvlen = recvfrom(isocketserver, ucrecvbuf, 999, 0, (struct sockaddr *)&tsocketclientaddr&iaddrlen);
if (irecvlen > 0)
ucrecvbuf[irecvlen] = '\0';
printf("get msg from %s : %s\n", inet_ntoa(tsocketclientaddr.sin_addr), ucrecvbuf);
close(isocketserver);
return 0;
client.c
* connect
* send/recv
unsigned char ucsendbuf[1000];
int isendlen;
if (argc != 2)
printf("usage:\n");
printf("%s <server_ip>\n", argv[0]);
isocketclient = socket(af_inet, sock_dgram, 0);
//tsocketserveraddr.sin_addr.s_addr = inaddr_any;
if (0 == inet_aton(argv[1], &tsocketserveraddr.sin_addr))
{
printf("invalid server_ip\n");
iret = connect(isocketclient, (const struct sockaddr *)&tsocketserveraddr, sizeof(struct sockaddr));
printf("connect error!\n");
if (fgets(ucsendbuf, 999, stdin))
isendlen = send(isocketclient, ucsendbuf, strlen(ucsendbuf), 0);
if (isendlen <= 0)
close(isocketclient);