我有一個簡單的程序來檢查端口是否打開,但我想縮短套接字連接的超時長度,因爲默認時間太長。我不知道如何做到這一點。代碼如下:C:套接字連接超時
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main(int argc, char **argv) {
u_short port; /* user specified port number */
char addr[1023]; /* will be a copy of the address entered by u */
struct sockaddr_in address; /* the libc network address data structure */
short int sock = -1; /* file descriptor for the network socket */
if (argc != 3) {
fprintf(stderr, "Usage %s <port_num> <address>", argv[0]);
return EXIT_FAILURE;
}
address.sin_addr.s_addr = inet_addr(argv[2]); /* assign the address */
address.sin_port = htons(atoi(argv[2])); /* translate int2port num */
sock = socket(AF_INET, SOCK_STREAM, 0);
if (connect(sock,(struct sockaddr *)&address,sizeof(address)) == 0) {
printf("%i is open\n", port);
}
close(sock);
return 0;
}
你在哪個平臺上? – Duck 2010-04-08 04:51:35
我正在使用linux – 2010-04-08 04:52:21
您在回答「fcntl(sock,F_SETFL,O_NONBLOCK)」中添加了「 請注意,在此之後,下一個套接字讀取也變爲非阻塞! – 2013-09-18 10:44:28