我是unix套接字編程的新手。我還沒有發現自己是一本舒適的書或教程,所以我真的很掙扎。C socket編程 - printf不會在屏幕上打印任何東西
下面是程序代碼:
#include<stdio.h>
#include<sys/socket.h>
#include<sys/types.h>
#include <netinet/in.h>
int main(){
printf("one");
int socketHandle, newSocketHandle, portno;
struct sockaddr_in serverAddress, clientAddress;
printf("two");
portno = 5001;
bzero((char *) &serverAddress, sizeof(serverAddress));
serverAddress.sin_family = AF_INET;
serverAddress.sin_addr.s_addr = INADDR_ANY;
serverAddress.sin_port = htons(portno);
printf("three");
//creating the socket
socketHandle = socket(AF_INET, SOCK_STREAM, 0);
if(socketHandle < 0){
perror("ERROR : Socket not created.");
return -1;
}
printf("Socket created.");
//binding the socket
if(bind(socketHandle, (struct sockaddr *) &serverAddress, sizeof(serverAddress)) < 0){
perror("ERROR : Socket not binded.");
return -1;
}
printf("Socket binded.");
//make the socket listen
listen(socketHandle, 5);
int len = sizeof(clientAddress);
//accept the connection requests
newSocketHandle = accept(socketHandle, (struct sockaddr *) &clientAddress, &len);
if(newSocketHandle < 0){
perror("ERROR : Connection not accepted.");
}
printf("Connection accepted.");
return 0;
}
(我試圖打印one
,two
,並且three
調試)
但是,即使是printf("one")
在第一行不起作用。 光標只是閃爍(表示程序仍在執行中)。我甚至無法得知上述程序中出現問題的線索。使用bzero()
功能也拋出一個警告說
warning: incompatible implicit declaration of built-in function ‘bzero’ [enabled by default]
我覺得socket編程困難,因爲不同的網站表現出不同的代碼。另外,請提供任何關於C/C++套接字編程的好教程。
'serverAddress'未初始化。您正試圖綁定到一個隨機地址。顯然,這失敗了。 – wildplasser
@wildplasser我添加了第二個代碼片段試圖做到這一點。 – Kevin
對不起,我很難讀出序列碼。順便說一句:我沒有在代碼中的任何地方看到'bzero()'。 – wildplasser