#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
int main()
{
int socket_fd;
while (1)
{
socket_fd = socket(AF_INET, SOCK_STREAM, 0);
if (socket_fd == -1)
{
printf("create socket error\n");
continue;
}
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(1234);
if (bind(socket_fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)
{
printf("bind socket error\n");
continue;
}
if (listen(socket_fd, 10) == -1)
{
printf("listen socket error\n");
continue;
}
break;
}
printf("======waiting for client's request======\n");
struct sockaddr_in clnt_addr;
socklen_t clnt_addr_size = sizeof(clnt_addr);
char str[40]={0};
while (1)
{
int clnt_sock = accept(socket_fd, (struct sockaddr *)&clnt_addr, &clnt_addr_size);
int l = recv(clnt_sock, str, 40, 0);
printf("client send: %s\n", str);
strcat(str, "+ACK");
send(clnt_sock, str, l+4, 0);
memset(str, 0, 40);
close(clnt_sock);
}
close(socket_fd);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
int main()
{
struct sockaddr_in serv_addr;
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("192.168.10.5");
serv_addr.sin_port = htons(1234);
char buffer[40]={0};
while (1)
{
int sock = socket(AF_INET, SOCK_STREAM, 0);
connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr));
printf("Please write:");
scanf("%s", buffer);
send(sock, buffer, strlen(buffer), 0);
memset(buffer, 0, 40);
recv(sock, buffer, 40, 0);
printf("Serve send: %s\n", buffer);
memset(buffer, 0, 40);
close(sock);
}
return 0;
}