Unix(Linux) C++ ÏÂÖ§³ÖtimeoutµÄconnect()µÄʵÏÖÀý×Ó
java µÄconnectÓÐtimeoutÕâ¸ö¹¦ÄÜ£¬C++µÄconnect·´¶øÃ»ÓУ¿ Íø²éµÃµ½ÁËÁ½¸öʵÏֵİ汾ÈçÏ£º
Ö§³ÖtimeoutµÄconnect() / Connect with timeout
Code:
void connect_w_to(void) {
int res;
struct sockaddr_in addr;
long arg;
fd_set myset;
struct timeval tv;
int valopt;
socklen_t lon;
// Create socket
soc = socket(AF_INET, SOCK_STREAM, 0);
if (soc < 0) {
fprintf(stderr, "Error creating socket (%d %s)\n", errno, strerror(errno));
exit(0);
}
addr.sin_family = AF_INET;
addr.sin_port = htons(2000);
addr.sin_addr.s_addr = inet_addr("192.168.0.1");
// Set non-blocking
if( (arg = fcntl(soc, F_GETFL, NULL)) < 0) {
fprintf(stderr, "Error fcntl(..., F_GETFL) (%s)\n", strerror(errno));
exit(0);
}
arg |= O_NONBLOCK;
if( fcntl(soc, F_SETFL, arg) < 0) {
fprintf(stderr, "Error fcntl(..., F_SETFL) (%s)\n", strerror(errno));
exit(0);
}
// Trying to connect with timeout
res = connect(soc, (struct sockaddr *)&addr, sizeof(addr));
if (res < 0) {
if (errno == EINPROGRESS) {
fprintf(stderr, "EINPROGRESS in connect() - selecting\n");
do {
tv.tv_sec = 5 //overtime;
tv.tv_usec = 0;
FD_ZERO(&myset);
FD_SET(soc, &myset);
res = select(soc+1, NULL, &myset, NULL, &tv);
if (res < 0 && errno != EINTR) {
fprintf(stderr, "Error connecting %d - %s\n", errno, strerror(errno));
exit(0);
}
else if (res > 0) {
// Socket selected for write
lon = sizeof(int);
if (getsockopt(soc, SOL_SOCKET, SO_ERROR, (void*)(&valopt), &lon) < 0) {
fprintf(stderr, "Error in getsockopt() %d - %s\n", errno, strerror(errno));
exit(0);
}
// Check the value returned...
Ïà¹ØÎĵµ£º
/*
* ¸ÃÎļþÖеÄÁ½¸öº¯Êýread_pipeºÍwrite_pipeÊÇÉϲ㺯Êý
* readºÍwriteµÄµ×²ãʵÏÖ
*/
/*
* linux/fs/pipe.c
*
* (C) 1991 Linus Torvalds
*/
#include <signal.h>
#include <linux/sched.h>
// ÄÚ´æ¹ÜÀíÍ·Îļþ¡£º¬ÓÐÒ³Ãæ´óС¶¨Òåº ......
¹Ø×¢Android£¬¹Ø×¢Google ǰÈÕLinux Kernelά»¤ÕßGreg Kroah-Hartman°ÑAndroid´úÂë´ÓLinux Kernel´úÂë¿âÖÐɾ³ýµÄÏûÏ¢ÒýÀ´Á˹㷺¹Ø×¢£¬¿ª·¢½çÒÑÓкܶàÆÀÂÛ¶Ô´ËʽøÐÐÌÖÂÛ¡£ifanr½ñÈÕÌṩÁ˵±ÌìGregÉùÃ÷µÄÈ«ÒëÎÄ£¬ÏÂÃæ¾ÍÈÃÎÒÃÇÀ´¿´¿´¡£ 2.6.33 °æÄÚºËÒÆ³ýÁËAndroidµÄ´úÂë¡£ºÜ¶àÈ˲»¶ÏµØÎÊÎÒ·¢ÉúÁËʲô£¬¶ÔÓÚAnd ......
µ±Ö´ÐÐ
ls -l
»ò
ls -al
ÃüÁîºóÏÔʾµÄ½á¹ûÖУ¬×îÇ°ÃæµÄµÚ
2
¡«
10
¸ö×Ö·ûÊÇÓÃÀ´±íʾȨÏÞ¡£µÚÒ»¸ö×Ö·ûÒ»°ãÓÃÀ´Çø·ÖÎļþºÍĿ¼£º
d
£º±íʾÊÇÒ»¸öĿ¼£¬ÊÂʵÉÏÔÚ
ext2fs
ÖУ¬Ä¿Â¼ÊÇÒ»¸öÌØÊâµÄÎļþ¡£
££º±íʾÕâÊÇÒ»¸öÆÕͨµÄÎļþ¡£
l:
±íʾ ......
×òÌìÓôÃÆÁËÒ»Ì죬ÒòΪ²»¹ÜÎÒÈçºÎ±àÒ룬×ÜÊÇÓдíÎó²úÉú¡£
ûÏëµ½½ñÌìÎÒÇåÀíµôËùÓÐÎļþ£¬ÖØÐ²Ù×÷ÁËÒ»±à£¬¾ÓÈ»ÉñÆæ°ã±àÒë³É¹¦ÁË¡£ÍÚ¹þ¹þ¡£¡£¡£Ì«¸ßÐËÁË£¬ÖÕÓÚÀë±àÒë¿ÉÔËÐÐÔÚIPHONE
»úÆ÷ÉϵÄHELLO world ²»Ô¶ÁË£¬Ì«¼¤¶¯ÁË¡£¡£
×ܽáһϣºÎÒ×òÌì°²×°Á˹ܷ½ÁгöµÄËùÓаü£¬»¹ÓоÍÊDz»·ÅÆú£¬¶àÊÔ¼¸´Î¡£
Here we provide a list ......
Ò».LinuxÄÚ´æ¹ÜÀíµÄһЩ»ù±¾¸ÅÄî
ÄÚ´æ¿Õ¼ä£º
¾ø´ó¶àÊýµÄǶÈëʽϵͳµÄϵͳÄÚ´æºÍI/OµØÖ·¿Õ¼äÊÇͳһ±àÖ·µÄ£¬ÄÚ´æºÍI/OµØÖ·¿Õ¼ä¹²Ïí0x00000000~0xFFFFFFFF¹²4GBµØÖ·¿Õ¼ä·¶Î§£¬Õâ4GBµÄµØÖ·¿Õ¼ä·¶Î§°üÀ¨ÒÔϼ¸ÖÖ´æ´¢¿Õ¼ä£ºÉ豸¿Õ¼ä¡¢ÄÚ²¿¸ßËÙSRAM¿Õ¼ä¡¢ÄÚ ......