我在寫一個基本的hello世界網絡程序,但是當我在客戶端調用write
時,程序停止。有誰知道爲什麼發生這種情況?該函數不返回任何內容:寫入套接字退出程序
const char* msg = "Hello World!\n";
char buffer[256];
int sockfd, n;
struct sockaddr_in srv_ip4;
struct hostent* server;
puts ("a");
sockfd = socket (AF_INET, SOCK_STREAM, 0);
if (sockfd < 0) {
perror ("Unable to open socket");
return false;
}
puts ("b");
server = gethostbyname (addr);
if (!server) {
fprintf (stderr, "Unable to find host: %s\n", addr);
return false;
}
memset (&srv_ip4, 0, sizeof (struct sockaddr_in));
puts ("c");
srv_ip4.sin_family = AF_INET;
memcpy (&srv_ip4.sin_addr.s_addr, server->h_addr, server->h_length);
srv_ip4.sin_port = htons (PORT);
puts ("d");
n = write (sockfd, msg, 13);
if (n < 0) {
puts ("Why?");
perror ("Unable to write to socket");
return false;
}
memset (buffer, 0, 256);
puts ("e");
n = read (sockfd, buffer, 255);
if (n < 0) {
perror ("Unable to read from socket");
return false;
}
printf ("%s", buffer);
puts ("f");
close (sockfd);
return true;
輸出是:
A B C d
程序是否掛起或終止? – deviantfan
程序終止。 – para
「sockfd」聲明在哪裏,它與哪裏連接? –