Chinaunix首页 | 论坛 | 博客

tt

  • 博客访问: 10504
  • 博文数量: 18
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 180
  • 用 户 组: 普通用户
  • 注册时间: 2015-07-13 15:06
文章分类

全部博文(18)

文章存档

2015年(18)

我的朋友

分类: 网络与安全

2015-08-20 16:54:43

socket Clinent

分3步

第一步,连接服务器
void CclientDlg::OnClickedConnect()
{
// TODO: 在此添加控件通知处理程序代码
CString msg="";
if(ClientSocket != INVALID_SOCKET)//已经连接服务器,则断开服务器
{
::closesocket(ClientSocket);
::WSACleanup();
ClientSocket = INVALID_SOCKET;
Connect.SetWindowTextA("断开");
msg += "\r\n已断开!";
}
else//连接服务器
{
Connect.SetWindowTextA("连接");
if(aimport > 65535)
{
AfxMessageBox("端口溢出!请重新设定!");
return;
}


WSADATA data;
if(::WSAStartup(MAKEWORD(2, 2), &data))
{
AfxMessageBox("启动套接字失败!");
return;
}
sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(aimport);
AimIP.GetAddress(addr.sin_addr.S_un.S_un_b.s_b1, addr.sin_addr.S_un.S_un_b.s_b2, 
addr.sin_addr.S_un.S_un_b.s_b3, addr.sin_addr.S_un.S_un_b.s_b4);


ClientSocket = ::socket(AF_INET, SOCK_STREAM, 0);


if(INVALID_SOCKET == ClientSocket ||
   ::WSAAsyncSelect(ClientSocket, this->m_hWnd, WM_SOCKET, FD_CONNECT|FD_READ|FD_CLOSE) == SOCKET_ERROR)//连接
{
AfxMessageBox("连接失败!");
::WSACleanup();
ClientSocket = INVALID_SOCKET;
return;
}
::connect(ClientSocket, (sockaddr*)&addr, sizeof(addr));
SetTimer(1, 4000, NULL);
msg += "\r\n正在连接...";
}
MsgShow.SetWindowText(msg);
MsgShow.LineScroll(MsgShow.GetLineCount());
}

第二步,编写Onsocket函数
这个和服务器的差不多,上一篇有。

第3步,发送按钮
void CclientDlg::OnClickedSend()
{
// TODO: 在此添加控件通知处理程序代码
if(ClientSocket != INVALID_SOCKET)
{
char sendd[500] = {0};
MsgSend.GetWindowText(sendd, sizeof(sendd) - 1);
int strlength = strlen(sendd);
if(strlength < 1)
{
MessageBox("发送内容不能为空!");
return;
}
CString msg;
        MsgShow.GetWindowText(msg);
if(::send(ClientSocket, sendd, strlength, 0) != SOCKET_ERROR)
{
msg += "\r\n本机: \r\n";
msg += sendd;
}
else
msg += "\r\n本机: 消息发送失败!";
MsgShow.SetWindowText(msg);
MsgShow.LineScroll(MsgShow.GetLineCount());
MsgSend.SetWindowTextA("");
}
}


阅读(93) | 评论(0) | 转发(0) |
0

上一篇:socket中服务器代码

下一篇:socket 客户端

给主人留下些什么吧!~~