Извините за очень общий звучащий вопрос.
скажем
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define SERVER_ADDRESS "123.456.789.012"
#define CLIENT_ADDRESS "123.456.789.013"
#define SERVER_TCP_PORT "1234"
#define CLIENT_TCP_PORT "1235"
int main()
{
printf("o halo thar");
int sockfd, new_sockfd, msg_len;
void * got_msg = "got ur msg!";
void * message;
struct sockaddr_in server_address, client_address;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
exit(1);
printf("socket is opened");
bzero((char * ) &server_address, sizeof(server_address));
server_address.sin_family = AF_INET;
server_address.sin_addr.s_addr = htonl(SERVER_ADDRESS);
server_address.sin_port = htons(SERVER_TCP_PORT);
if (bind(sockfd, (struct sockaddr *) &server_address, sizeof(server_address)) < 0)
exit(1);
printf("socket is bound");
listen(sockfd,11);
printf("listening");
if (accept(sockfd, (struct sockaddr *) &client_address, sizeof(client_address)) < 0) // THE BAD LINE
exit(1);
printf("accepted");
int i;
for( i = 0; i < 11; i++)
{
msg_len = recv(sockfd, (void *) message, 10000, 0);
if (msg_len < 1)
exit(1);
printf("receiving msg");
if (send(sockfd, (void *) got_msg, 10000, 0) < 0);
exit(1);
printf("sending msg");
}
close(sockfd);
}
должно вывести abc
, если все работает правильно. конечно, мой код не. но я локализовал проблему для этой определенной строки кода, которую я называю somecode()
. когда я комментирую somecode()
, программа выводит ab
(не c
). однако, когда он не закомментирован, он ничего не печатает. так с какой проблемой я сталкиваюсь, которая затрагивает предыдущие заявления? извините за неопределенность. Мне просто интересно, как хорошо видится somecode()
, но когда он работает, это влияет на выполнение кода, которое должно быть выполнено до того, как оно достигнет somecode()
? Спасибо, ребята.
РЕДАКТИРОВАТЬ: somecode (), являющийся
if (accept(sockfd, (struct sockaddr *) &client_address, sizeof(client_address)) < 0)
exit(1);
EDIT2:
извините за то, что был слишком расплывчатым. Я даже забыл описать, что происходит с программой. он ничего не печатает, и мне нужно ctrl + c, чтобы выйти из него.