- 論壇徽章:
- 0
|
我在多線程編程是發(fā)現(xiàn)了一個(gè)問題。就是當(dāng)我調(diào)用下面的OpenConnect 函數(shù)時(shí),第一次是成功的,然后socket被關(guān)閉,但是第二次調(diào)用這個(gè)函數(shù)是,就返回-1.然后我重啟了程序,還是出現(xiàn)這種情況。
但是當(dāng)我把static這個(gè)修飾符去掉后就沒有上面的問題了。
所以我想問下大家,這個(gè)是什么原因?qū)е碌摹?br />
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;
} |
|