非同步socket TCP 通訊

2021-08-03 15:13:09 字數 2058 閱讀 2619

使用 wsaasyncselect 可實現非同步 socket 通訊,原型:

wsaasyncselect(

socket s, //套接字

hwnd hwnd, //接收網路事件的視窗控制代碼

unsigned

int wmsg,//網路事件通知訊息

long lwvent //套接字需要的通知碼

);

long lwvent 有:

**:

server:

begin_message_map(casyncsocketdlg, cdialogex)

on_wm_paint()

on_wm_querydragicon()

on_bn_clicked(idok, &casyncsocketdlg::onbnclickedok)

on_message(wm_socket_msg, &casyncsocketdlg::onsockmsg)

end_message_map()

// casyncsocketdlg 訊息處理程式

bool casyncsocketdlg::oninitdialog()

void casyncsocketdlg::onbnclickedok()

lresult casyncsocketdlg::onsockmsg(wparam wparam, lparam lparam)

break;

case fd_read:

break;

case fd_close:

break;

default:

break;

}m_edit.setwindowtext(msg);

m_edit.linescroll(m_edit.getlinecount() - 1, 0);

return

0;}

client:

begin_message_map(casyncsocketclientdlg, cdialogex)

on_wm_paint()

on_wm_querydragicon()

on_bn_clicked(idok, &casyncsocketclientdlg::onbnclickedok)

on_bn_clicked(idc_connect, &casyncsocketclientdlg::onbnclickedconnect)

on_bn_clicked(idc_send, &casyncsocketclientdlg::onbnclickedsend)

on_message(wm_socket_msg, &casyncsocketclientdlg::onsockmsg)

end_message_map()

// casyncsocketclientdlg 訊息處理程式

bool casyncsocketclientdlg::oninitdialog()

void casyncsocketclientdlg::onbnclickedok()

void casyncsocketclientdlg::onbnclickedconnect()

else

if (s == "斷開")

}void casyncsocketclientdlg::onbnclickedsend()

lresult casyncsocketclientdlg::onsockmsg(wparam wparam, lparam lparam)

break;

case fd_read:

break;

case fd_close:

break;

default:

break;

}m_edit.setwindowtext(msg);

m_edit.linescroll(m_edit.getlinecount() - 1, 0);

return

0;}

vs2015工程:

Tornado 非同步socketTCP通訊

tornado 有 tcpclient 和 tcpserver 兩個類,可用於實現 tcp 的客戶端和服務端。事實上,這兩個類都是對iostream的簡單包裝。iostream 是 client 與 server 之間的 tcp 通道。被動等待建立 iostream 的一方是 server,主動找對...

Luat實現socket tcp通訊

以下 需要在luat通訊模組中使用 建立連線後無法主動關閉,只能靠斷網關閉或者伺服器端關閉 模組功能 tcp連線,報文收發 需要使用合宙官方lib 作者 wangjiaw 983893384 qq.com 版本 20210309 修改記錄1 20210309 require socket modul...

使用socket tcp實現通訊

一 伺服器端 include include 需要引入ws2 32.lib動態鏈結庫 void main if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 socket socksrv socket af inet,sock stream,...