История изменений
Исправление cvs-255, (текущая версия) :
Ты спрашивал где в TCP двусторонняя связь? Я тебе привел
Либо же чуть модифицированный вариант:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int err=-1;
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0)
printf("bind error!\n");
else
printf("bind is ok\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0)
printf("listen error!\n");
else
printf("listen is ok\n");
printf("server waiting\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
while(1)
{
char ch;
if (read(client_sockfd, &ch, 1) != 0)
{
ch++;
write(client_sockfd, &ch, 1);
}
else
break;
}
close(client_sockfd);
printf("exiting\n");
}
В этом случае вообще соединение только 1 раз создается, а потом в него пишется и читается много-много раз
Исходная версия cvs-255, :
Ты спрашивал где в TCP двусторонняя связь? Я тебе привел
Либо же чуть модифицированный вариант:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{
int err=-1;
int server_sockfd, client_sockfd;
int server_len, client_len;
struct sockaddr_in server_address;
struct sockaddr_in client_address;
server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(INADDR_ANY);
server_address.sin_port = htons(9734);
server_len = sizeof(server_address);
err=(bind(server_sockfd, (struct sockaddr *) &server_address, server_len));
if(err!=0)
printf("bind error!\n");
else
printf("bind is ok\n");
err=-1;
err=(listen(server_sockfd, 5));
if(err!=0)
printf("listen error!\n");
else
printf("listen is ok\n");
printf("server waiting\n");
client_len = sizeof(client_address);
client_sockfd = accept(server_sockfd, (struct sockaddr *) &client_address, &client_len);
while(1)
{
char ch;
if (read(client_sockfd, &ch, 1) != 0)
{
ch++;
write(client_sockfd, &ch, 1);
}
else
break;
}
close(client_sockfd);
printf("exiting\n");
}
В этом случае вообще соединение только 1 раз создается, а потом в него пишется и читается