#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#define SERV_PORT 9877
#define BUF_MAX_SIZE 1024
int main(int argc, char *argv[])
{
socklen_t cli_addr_len;
int sock_fd;
struct sockaddr_in addr;
int ret;
char buffer[BUF_MAX_SIZE] = {0};
ssize_t nwrite_bytes, nread_bytes;
if (2 != argc)
{
printf("Usage: ./client <IP address>\n");
exit(EXIT_FAILURE);
}
sock_fd = socket(AF_INET, SOCK_DGRAM, 0); //创建 socket
if (-1 == sock_fd)
{
perror("socket");
exit(EXIT_FAILURE);
}
memset((struct sockaddr_in*)&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET; //指定 socket 域
inet_aton(argv[1], &addr.sin_addr); //指定 IP
addr.sin_port = htons(SERV_PORT); //指定 端口
while (1)
{
cli_addr_len = sizeof(addr);
//fgets(buffer, BUF_MAX_SIZE, stdin);
scanf ("%s", buffer);
if (strncmp("end", buffer, 3) == 0)
{
break;
}
nwrite_bytes = sendto(sock_fd, buffer, strlen(buffer),0,(struct sockaddr *)&addr, cli_addr_len);
if (-1 == nwrite_bytes)
{
perror("sendto");
exit(EXIT_FAILURE);
}
printf("Request send to server\n");
nread_bytes = recvfrom(sock_fd, buffer, BUF_MAX_SIZE,0,(struct sockaddr *)&addr, &cli_addr_len);
if (-1 == nread_bytes)
{
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("Server say: ");
fputs(buffer, stdout);
printf ("\n");
}
exit(EXIT_SUCCESS);
}
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
#define SERV_PORT 9877
#define BUF_MAX_SIZE 1024
int main(int argc, char *argv[])
{
socklen_t cli_addr_len;
int sock_fd;
struct sockaddr_in addr;
int ret;
char buffer[BUF_MAX_SIZE] = {0};
ssize_t nwrite_bytes, nread_bytes;
if (2 != argc)
{
printf("Usage: ./client <IP address>\n");
exit(EXIT_FAILURE);
}
sock_fd = socket(AF_INET, SOCK_DGRAM, 0); //创建 socket
if (-1 == sock_fd)
{
perror("socket");
exit(EXIT_FAILURE);
}
memset((struct sockaddr_in*)&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = AF_INET; //指定 socket 域
inet_aton(argv[1], &addr.sin_addr); //指定 IP
addr.sin_port = htons(SERV_PORT); //指定 端口
while (1)
{
cli_addr_len = sizeof(addr);
//fgets(buffer, BUF_MAX_SIZE, stdin);
scanf ("%s", buffer);
if (strncmp("end", buffer, 3) == 0)
{
break;
}
nwrite_bytes = sendto(sock_fd, buffer, strlen(buffer),0,(struct sockaddr *)&addr, cli_addr_len);
if (-1 == nwrite_bytes)
{
perror("sendto");
exit(EXIT_FAILURE);
}
printf("Request send to server\n");
nread_bytes = recvfrom(sock_fd, buffer, BUF_MAX_SIZE,0,(struct sockaddr *)&addr, &cli_addr_len);
if (-1 == nread_bytes)
{
perror("recvfrom");
exit(EXIT_FAILURE);
}
printf("Server say: ");
fputs(buffer, stdout);
printf ("\n");
}
exit(EXIT_SUCCESS);
}