首先客户端和服务器已经连接上
if(WSAAsyncSelect(m_socket,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_CLOSE|FD_WRITE|FD_READ)>0)
{
sign=1;
MessageBox("异步错误","错误",MB_OK);
}
//采用的是异步传输LRESULT CNetWorkDlg::OnServerMessage(WPARAM wParam,LPARAM lParam)
{
SOCKET acceptsocket;
char info[20];
switch(lParam)
{
case FD_ACCEPT:
acceptsocket=accept(m_socket,NULL,NULL);
WSAAsyncSelect(acceptsocket,this->m_hWnd,WM_SOCKET,FD_CLOSE|FD_WRITE|FD_READ);
if(acceptsocket==SOCKET_ERROR)
{
MessageBox("接受错误","错误",MB_OK);
}
else
{
MessageBox("连接成功","消息",MB_OK);
} break;
case FD_READ:
char buf[10];
int n;
n=recv(acceptsocket,buf,10,0); //这里的返回值总是-1
buf[n]=0;
break;
case FD_CLOSE:
break;
case FD_WRITE:
break;
}
return 0;
}
////////////////////////////////////////////
客户端代码//
void CClientDlg::OnSendClicked()
{
char sendbuf[30]="malong";
if(send(m_socket,sendbuf,strlen(sendbuf),0)==SOCKET_ERROR)
{
MessageBox("SEND错误","错误",MB_OK);
}
}
每个函数都进行了错误处理
发送是成功的就是服务器接受的时候有问题
达人帮忙看看什么地方有问题
if(WSAAsyncSelect(m_socket,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_CLOSE|FD_WRITE|FD_READ)>0)
{
sign=1;
MessageBox("异步错误","错误",MB_OK);
}
//采用的是异步传输LRESULT CNetWorkDlg::OnServerMessage(WPARAM wParam,LPARAM lParam)
{
SOCKET acceptsocket;
char info[20];
switch(lParam)
{
case FD_ACCEPT:
acceptsocket=accept(m_socket,NULL,NULL);
WSAAsyncSelect(acceptsocket,this->m_hWnd,WM_SOCKET,FD_CLOSE|FD_WRITE|FD_READ);
if(acceptsocket==SOCKET_ERROR)
{
MessageBox("接受错误","错误",MB_OK);
}
else
{
MessageBox("连接成功","消息",MB_OK);
} break;
case FD_READ:
char buf[10];
int n;
n=recv(acceptsocket,buf,10,0); //这里的返回值总是-1
buf[n]=0;
break;
case FD_CLOSE:
break;
case FD_WRITE:
break;
}
return 0;
}
////////////////////////////////////////////
客户端代码//
void CClientDlg::OnSendClicked()
{
char sendbuf[30]="malong";
if(send(m_socket,sendbuf,strlen(sendbuf),0)==SOCKET_ERROR)
{
MessageBox("SEND错误","错误",MB_OK);
}
}
每个函数都进行了错误处理
发送是成功的就是服务器接受的时候有问题
达人帮忙看看什么地方有问题
端口都是一样的(5000)
但是在ACCEPT的时候
将后面的两个null改为
sockaddr_in client;
int n=sizeof(client);
ACCEPT(m_socket,(SOCKADDR*)&client,&n);
从返回的client 看端口,却不是服务器的端口5000,为什么啊
理论上是在FD_READ下面接受啊事件类型含义
F D _ R E A D 应用程序想要接收有关是否可读的通知,以便读入数据
F D _ W R I T E 应用程序想要接收有关是否可写的通知,以便写入数据
F D _ O O B 应用程序想接收是否有带外( O O B)数据抵达的通知
F D _ A C C E P T 应用程序想接收与进入连接有关的通知
F D _ C O N N E C T 应用程序想接收与一次连接或者多点j o i n操作完成的通知
F D _ C L O S E 应用程序想接收与套接字关闭有关的通知
F D _ Q O S 应用程序想接收套接字“服务质量”(Q o S)发生更改的通知
F D _ G R O U P _ Q O S 应用程序想接收套接字组“服务质量”发生更改的通知(现在没
什么用处,为未来套接字组的使用保留)
F D _ R O U T I N G _ I N T E R FA C E _ C H A N G E 应用程序想接收在指定的方向上,与路由接口发生变化的通知
F D _ A D D R E S S _ L I S T _ C H A N G E 应用程序想接收针对套接字的协议家族,本地地址列表发生变化
的通知