MFC下套接字如何创建,为什么创建的套接字在设计的程序中看不到 我在做一个聊天软件,用到了有关套接字的知识。我给侦听创建了一个类,想用于建立侦听套接字,但是我不知道套接字具体的一个东西是怎么样的、在哪里,我看不到套接字。谁能给我个答案? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看的应该是别人封装过的类完整的代码参考http://www.vckbase.com/code/listcode.asp?mclsid=9 我想知道套接字在哪里被创建了,是不是CAsyncSocket这个基类里面就已经给创建了? CAsyncSocket这个基类里面创建了,如果想要了解更底层的知识,建议去查查这方面的windows API CAsyncSocket 里的 creat不就创建? 底层的东西不都在这个函数里实现了 套接字就相当于服务器和客户端的连接的媒介,,,服务器和客户端通过套接字来进行通信,,SOCKET s; //声明套接字s=socket(PF_INET,SOCK_STREAM,0); //创建套接字s,类型为SOCK_STREAM,一般用来实现TCP通信这里的s就是套接字了,, MFC封装了CSocket用它创建服务器的一般代码为m_pSocketServer = new CSocket(GetSafeHwnd());if(!m_pSocketServer->Create(m_nPort, SOCK_STREAM, GetLocalIPAdress()))//tcp形式{ delete m_pSocketServer; m_pSocketServer = NULL; return;}m_pSocketServer->Bind(m_nPort, GetLocalIPAdress());//端口绑定m_pSocketServer->Listen();//设置监听很简单 这样的还是自己写吧,程序脉络比较清楚WSAStartup();//初始化socketSOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);if(INVALID_SOCKET == s){ // 失败}SOCKADDR_IN addr;addr.sin_family = AF_INET;addr.sin_port = htons(...);addr.sin_addr.S_un.S_addr = inet_addr("...");if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr)){ // 绑定socket失败}if(SOCKET_ERROR == listen(s, 5)){// 监听socket失败}SOCKADDR_IN from;int len = sizeof(from);while(TRUE){... SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len); if(INVALID_SOCKET == sNew) { // 出错 } ... send(sNew, ...); recv(sNew, ...);}closescoket(s);WSACleanup(); WSAStartup();//初始化socketSOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);if(INVALID_SOCKET == s){ // 失败}SOCKADDR_IN addr;addr.sin_family = AF_INET;addr.sin_port = htons(...);addr.sin_addr.S_un.S_addr = inet_addr("...");if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr)){ // 绑定socket失败}if(SOCKET_ERROR == listen(s, 5)){// 监听socket失败}SOCKADDR_IN from;int len = sizeof(from);while(TRUE){... SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len); if(INVALID_SOCKET == sNew) { // 出错 } ... send(sNew, ...); recv(sNew, ...);}closescoket(s);WSACleanup(); 请问CImage保存PNG vc ado 读取mysql图片(blod)字段不正确 如何把一个对话框工程转换成ActiveX控件? 基于实时阴影线渲染的阴影技术??? 下载的开源项目都提示 系统找不到指定文件,是怎么会事啊? 如何使用c语言把bmp图片中每个象素的rgb读到数组中。注意是纯c 这个问题有点怪,散分! NTFS 下文件夹安全属性的设置 关于用odbc加ado控件远程访问数据库的问题 客户机与服务器时间同步问题 DLL 随着程序的启动而立刻注入 别人用vb做了串口通信的程序,我想直接用在vc里,怎么办?
完整的代码参考
http://www.vckbase.com/code/listcode.asp?mclsid=9
服务器和客户端通过套接字来进行通信,,SOCKET s; //声明套接字
s=socket(PF_INET,SOCK_STREAM,0); //创建套接字s,类型为SOCK_STREAM,一般用来实现TCP通信这里的s就是套接字了,,
用它创建服务器的一般代码为m_pSocketServer = new CSocket(GetSafeHwnd());
if(!m_pSocketServer->Create(m_nPort, SOCK_STREAM, GetLocalIPAdress()))//tcp形式
{
delete m_pSocketServer;
m_pSocketServer = NULL;
return;
}
m_pSocketServer->Bind(m_nPort, GetLocalIPAdress());//端口绑定
m_pSocketServer->Listen();//设置监听很简单
WSAStartup();//初始化socket
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);
if(INVALID_SOCKET == s)
{
// 失败
}
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(...);
addr.sin_addr.S_un.S_addr = inet_addr("...");
if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr))
{
// 绑定socket失败
}
if(SOCKET_ERROR == listen(s, 5))
{
// 监听socket失败
}
SOCKADDR_IN from;
int len = sizeof(from);
while(TRUE)
{
...
SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len);
if(INVALID_SOCKET == sNew)
{
// 出错
}
...
send(sNew, ...);
recv(sNew, ...);
}closescoket(s);
WSACleanup();
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP0);
if(INVALID_SOCKET == s)
{
// 失败
}
SOCKADDR_IN addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(...);
addr.sin_addr.S_un.S_addr = inet_addr("...");
if(SOCKET_ERROR == bind(s, (LPSOCKADDR)&addr, sizeof(addr))
{
// 绑定socket失败
}
if(SOCKET_ERROR == listen(s, 5))
{
// 监听socket失败
}
SOCKADDR_IN from;
int len = sizeof(from);
while(TRUE)
{
...
SOCKET sNew = accept(s, (LPSOCKADDR)&from, &len);
if(INVALID_SOCKET == sNew)
{
// 出错
}
...
send(sNew, ...);
recv(sNew, ...);
}closescoket(s);
WSACleanup();