- 論壇徽章:
- 0
|
我在多線程編程是發(fā)現(xiàn)了一個問題。就是當我調用下面的OpenConnect 函數時,第一次是成功的,然后socket被關閉,但是第二次調用這個函數是,就返回-1.然后我重啟了程序,還是出現(xiàn)這種情況。
但是當我把static這個修飾符去掉后就沒有上面的問題了。
所以我想問下大家,這個是什么原因導致的。
static int OpenConnect(char *addr, unsigned short port)
{
struct sockaddr_in sa;
int sock;
int ret;
sa.sin_family = AF_INET;
sa.sin_addr.s_addr=inet_addr(addr);
sa.sin_port = htons(port);
if((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0)
{
return -1;
}
if((ret=connect(sock, (struct sockaddr *)&sa, sizeof(sa))) < 0)
{
close(sock);
return -2;
}
return sock;
} |
|