程式中寫了兩個類,cserver和cclent類,
分別是:
/**************cserver****************/
private:
void serverinit();
public:
bool initandlisten(hwnd hwnd,uint port);
public:
socket m_hsocket; //socket 控制代碼
socket m_connect;
sockaddr_in m_addr;
uint m_uport;
hwnd m_hwnd;
/******************.cpp**************/
cserver::cserver()
bool cserver::initandlisten(hwnd hwnd,uint port)
if(m_hsocket == null)
m_addr.sin_family = af_inet;
m_addr.sin_addr.s_un.s_addr = inaddr_any;
m_addr.sin_port = htons(m_uport);
int ret = 0;
int error = 0;
//繫結乙個套接字到本機的位址
ret = bind(m_hsocket, (lpsockaddr)&m_addr, sizeof(m_addr));
if(ret == socket_error)
//開始乙個偵聽過程,等待客戶的連線
ret = listen(m_hsocket, 5); //這裡的第二個引數表示最多支援的客戶連線數
if(ret == socket_error)
return true;
}void cserver::serverinit()
/*****************cclent******************/
#include "winsock.h"
private:
void clientinit();
public:
bool initandconnet(hwnd hwnd,uint port,cstring m_strserver);
void getstring(cstring & str);
void sendstring(cstring a);
public:
cstring m_strserver;
socket m_hsocket;
sockaddr_in m_addr;
uint m_uport;
hwnd m_hwnd;
cclient::cclient()
cclient::~cclient()
if(m_hsocket == null)
//準備伺服器的資訊,這裡需要指定伺服器的位址
m_addr.sin_family = af_inet;
m_addr.sin_addr.s_un.s_addr = inet_addr(m_strserver.getbuffer(0));
m_addr.sin_port = htons(m_uport); //改變埠號的資料格式
//這裡主動連線伺服器,該過程將等待一定時間
int ret = 0;
int error = 0;
ret = connect(m_hsocket, (lpsockaddr)&m_addr, sizeof(m_addr));
if(ret == socket_error)
}return true;
}void cclient::sendstring(cstring a)
}void cclient::getstring(cstring &str)
void cclient::clientinit()
}定義物件,呼叫函式就可以了
用Socket做乙個區域網聊天工具
程式設計成為簡單的服務端和客戶端之間的通訊,但通過一些方法可以將這兩者進行統一起來,讓服務端也成為客戶端,讓客戶端也成為服務端,使它們之間可以互相隨時不間斷的通訊.考慮到實現最原始的服務端和客戶端之間的通訊所需要的步驟對於寫這樣的程式是很有幫助的.作為服務端,要宣告乙個socket a並繫結 bin...
自己動手做乙個區域網聊天工具(一)
socket 程式設計。現在談談我對 socket 的理解。socket 的中文翻譯叫插座。我感覺這個翻譯很形象。socket 可以理解為一種連線物件,就是把服務端和客戶端都連線起來的物件。具體就是假如服務端和客戶端要連線起來,就是服務端和客戶端都要建立乙個 socket 物件,然後二者通過 soc...
利用linux管道實現乙個單向聊天工具
step 1 mkfifo fifo1 step 2 vim readfifo.c新增如下 readfifo檔案 include include include include include include include include int main close fd return 0 儲存...