服务器除了文件传输 还要文字通信功能
接收代码如下
int n=0; //定义全局变量n
SOCKADDR_IN add; //套接字地址对象
CString str13;
void CMyDlg::Onsockt1(WPARAM wParam,LPARAM lParam)
{
char cs[100],cs1[10000],name[15];
switch(lParam)
{
case FD_ACCEPT: //处理连接请求
{
s1=::accept(s,NULL,NULL); //接受客户端连接请求
n=n+1; //计数
str13.Format("有%d客户已经连接上了",n); //格式化字符串
this->SetWindowText(str13);
GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)cs1,10000);
::getpeername(s1,(SOCKADDR*)&add,(int*)sizeof(add));
//获取连接对方的ip地址
str13+=cs1;
str13+="\r\n";
str13+=::inet_ntoa(add.sin_addr); //转换主机字节的IP
str13+="登录";
GetDlgItem(IDC_EDIT1)->SetWindowText(str13);
}
break;
case FD_READ: //处理读取事件
{
GetDlgItem(IDC_SAVE)->EnableWindow(true); //使用保存文件按钮
GetDlgItem(IDC_CLEAR)->EnableWindow(true); //使用清屏文件按钮
s1=::accept(s,(sockaddr *)addr2,sizeof(addr2)); //应答连接请求
CString num="";
recv(s1,cs,100,NULL); //接受数据
GetDlgItem(IDC_EDIT1)->GetWindowText((LPTSTR)cs1,10000);
num+=(LPARAM)cs1;
num+="\r\n";
num+=::inet_ntoa(add.sin_addr); //将IP转换为主机顺序
num+="对您说: ";
num+=cs;
GetDlgItem(IDC_EDIT1)->SetWindowText(num);}
break;
}
}
}