TCP通信

C/S模式应用
/
// Server 
SOCKET m_socket;
sockaddr_in m_sockaddr;
if (NULL == m_socket)
{
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (!m_socket)
{
ASSERT(m_socket);
return ;
}
}
int error;
m_sockaddr.sin_family = AF_INET;
m_sockaddr.sin_port = htons(2555);
m_sockaddr.sin_addr.S_un.S_addr = INADDR_ANY;
int nRes = bind(m_socket, (const struct sockaddr*)&m_sockaddr, sizeof(m_sockaddr));
if(nRes == SOCKET_ERROR){
TRACE("Bind Error: %d /n", (error = WSAGetLastError()));
return ;
}
if (SOCKET_ERROR == listen(m_socket, 2))
{
TRACE("Listen Error: %d /n", (error = WSAGetLastError()));
return ;
}
//
// 等待 listen 的监听,对方必须用  connect连接
SOCKET s = accept(m_socket, NULL, NULL);
if(s == SOCKET_ERROR){
TRACE("Accept Error: %d /n", (error = WSAGetLastError()));
return ;
}
// 等待 send 接收
char buff[256];
nRes = recv(s, buff, 256, 0);
if(nRes == 0 || nRes == SOCKET_ERROR ){
TRACE("Recv data error: %d/n", WSAGetLastError());
return ;
}
buff[255] = '/0';
AfxMessageBox(CString(buff));
char* pbuff = "hello, my boy, i'm server!";
nRes = send(s, pbuff, 256, 0);
if(nRes == 0 || nRes == SOCKET_ERROR ){
TRACE("send error: %d/n", WSAGetLastError());
return ;
}
/
// Client
SOCKET m_socket;
sockaddr_in m_sockAddr;
if (NULL == m_socket)
{
m_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_IP);
if (!m_socket)
{
ASSERT(m_socket);
return ;
}
}
m_sockAddr.sin_family = AF_INET;
m_sockAddr.sin_port = htons(2555);
m_sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
int ret = 0;
int error= 0;
ret = connect(m_socket, (const struct sockaddr*)&m_sockAddr, sizeof(m_sockAddr));
if(ret == SOCKET_ERROR){
TRACE("Connect Error: %d /n", (error = WSAGetLastError()));
if(error == 10061)
AfxMessageBox(_T("请确认服务器确实已经打开并工作在同样的端口!"));
return ;
}
char *pbuff = "hello, my gril, i'm client!";
ret = send(m_socket, pbuff, 256, 0);
char prbuff[256];
ret = recv(m_socket, prbuff, 256, 0);
if(ret == 0){
TRACE("Recv data error: %d/n", WSAGetLastError());
return ;
}
prbuff[255] = '/0';
AfxMessageBox(CString(prbuff));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值