socket程式設計 連線伺服器(用IP位址或網域名稱)

2021-09-24 19:47:02 字數 1086 閱讀 5619

bool threadobject::checkip(qstring host)

}return true;

}//使用gethostbyname 通過網域名稱獲知ip位址 / 直接使用ip位址

int threadobject::netconnect(const char *host,u_short port)

//判斷是否為ip位址形式-true/網域名稱形式-false

if(checkip(qstring(host)))

else;

struct hostent *hp;

hp = gethostbyname(host);

if (hp == null)

return mosq_err_no_conn;

}strcpy(ip, inet_ntoa(*(struct in_addr *)hp->h_addr_list[0]));

print_debug("[%s:%d] 服務端 ip:%s,埠號:%d\n",__function__,__line__,ip,port);

addrsrv.sin_family = af_inet;        //通訊型別

addrsrv.sin_port = htons(port);        //埠號  必須是網路位元組順序

addrsrv.sin_addr.s_un.s_addr = inet_addr(ip);        //internet位址  必須是網路位元組順序  4位元組的ip位址

}//建立套接字  

sockclient = socket(af_inet, sock_stream, ipproto_tcp);  

if(invalid_socket == sockclient)  

//向伺服器發出連線請求  

if(::connect(sockclient, (lpsockaddr)&addrsrv, sizeof(addrsrv)) == socket_error)

return mosq_err_success;

} 注意: hp = gethostbyname(host);需在wsastartup(makeword(2, 2), &wsadata)之後

MFC 建立socket連線伺服器網路程式設計

mfc不像控制台在main函式裡寫 先新增控制項,控制項新增事件函式,然後再事件函式裡寫 如果伺服器未開啟,就去連線,會卡住。測試成功與否可以用messagebox t 建立連線 char sendbuf 512 cstring sendstr word wversion wsadata wsada...

socket伺服器簡易連線

1.socket 建立socket偽檔案生成檔案描述符fd 2.bind 給fd繫結埠和ip 3.listen 給當前socket設定最大客戶端鏈結 4.accept 阻塞等待客戶端連線 生成客戶端的fd,addr結構體 客戶端埠,ip等內容 5.read 讀資料 6.write 寫資料 7.clo...

非同步Socket程式設計I

下面,用乙個例子來解釋同步通訊和非同步通訊的根本區別。假定乙個伺服器應用程式在指定埠監聽客戶端傳送來的資料。在同步通訊接收中,當伺服器等待從客戶端接收資料時,如果流沒有資料,那麼,主線程會阻塞,直到資料請求得到。因此,在這段時間,伺服器端不能進行任何工作,直到接收到該客戶端的資料。如果此時,另乙個客...