一个SOCKET的小问题
WSADATA wsaData;
BOOL ret = WSAStartup(MAKEWORD(2,2), &wsaData);
if(ret != 0)
{
MessageBox(_T("初始化套接字失败!"));
return;
}
//创建服务器端套接字
serverSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(serverSocket == INVALID_SOCKET)
{
MessageBox(_T("creat wrong!"));
closesocket(serverSocket);
WSACleanup();
return ;
}
//绑定到本地一个端口上
sockaddr_in localaddr;
localaddr.sin_family = AF_INET;
localaddr.sin_port = htons(4000);
localaddr.sin_addr.s_addr =htonl(INADDR_ANY);
if(bind(serverSocket ,(const struct sockaddr*)&localaddr,sizeof(sockaddr)) == SOCKET_ERROR)
{
MessageBox(_T("绑定地址失败!"));
closesocket(serverSocket);
WSACleanup();
return;
}
//注册网络异步事件,m_hWnd为应用程序的主对话框或主窗口的句柄
WSAAsyncSelect(serverSocket, m_hWnd,NETWORK_EVENT, FD_ACCEPT | FD_CLOSE | FD_READ | FD_WRITE);
listen(serverSocket, 5); //设置侦听模式
int len = sizeof(sockaddr_in);
sockaddr_in clientaddr_in;
SOCKET clientSocket = accept(serverSocket, (struct sockaddr*)&clientaddr_in, &len);
//MessageBox(_T("失败!"));
return;
}
这是client端的程序
WSADATA wsaData;
BOOL ret = WSAStartup(MAKEWORD(2,2), &wsaData);
UpdateData(true);
CString servername ;
c_ip.GetWindowTextW(servername ); //读取服务器名称
int port;
port = 70;
//获取端口
sockaddr_in serveraddr;
//UpdateData(TRUE);
serveraddr.sin_family = AF_INET;
serveraddr.sin_port = htons(4000);
serveraddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
if (connect(clientsocket,(sockaddr*)&serveraddr,sizeof(serveraddr))!=0)
{MessageBox(_T("连接失败"));return;}
else
MessageBox(_T("连接成功"));
CString str;
str.Format(_T("a----->%s"),_T("进入聊天室"));
c_list.AddString(str);
int num =send(serversocket,(LPSTR)str.GetBuffer(0),str.GetLength(),0);
}
我在同一台机子上试的,先打开server的exe
在打开client的exe,为什么总在client的连接那里出错呢
不 是说127.0.0.1是一个回路吗
总是连不上啊
大家帮帮忙啊
相关推荐
一个简单的golang socket服务框架,使用简单的通信协议解决粘包问题,通过心跳计时的方式能-socket.zip
一个简单的golang socket服务框架,使用简单的通信协议解决粘包问题,通过心跳计时的方式能-socket
C#解决socket粘包问题,通信提供了一个自定义通信协议类MsgProtol,该类封装了打包和解包方法,可以解决分包和粘包问题
C#解决socket通信过程中粘包分包问题,本项目是一个只有6个C#代码文件的开源小工程,用来学习基于TCP的套接字通信包,可以自定义通信协议,处理分包和粘包,内置一个服务端和客户端的套接字程序,也有测试代码和对应的博客讲解代码。在消息正文的前方加入一个固定长度的数字表示消息正文的长度,这样就可以基本解决分包和粘包问题。整个工程基本基于良好的面向对象思想,代码注释清晰简洁。
Socket编程例子
Socket编程例子
vue-socket.io接收不到数据问题的解决方法
最近公司的一个vue项目用到了vue-socket.io来处理socket数据传输,之前用过socket.io-client,现在知道vue-socket.io是基于socket.io-client的一层封装,将socket挂于全局从而更方便的书写。 于是把代码拉取下来运行: 什么鬼,同样的代码为什么我的就接收不到数据,自己新建一个测试一下吧! 先用express和socket.io搭个小socket服务器: let express = require('express'); let app = express(); let server= require('http').Server(
Socket通信,通过异步,解决粘包问题
Socket通信,通过异步,解决粘包问题


网络编程
