C++ TCP Server

22 篇文章 0 订阅


C++ TCP Server

用C++写网络程序需要winsock2.h这个头文件,还有添加一个ws2_32.lib的lib库.


VC++2005添加Lib库的方法
1 项目- Server属性- 配置属性- 连接器- 附加依赖项
2 #pragma  comment(lib,"ws2_32.lib")
3 查找ws2_32.lib文件项目- 添加现有项,将ws2_32.lib作为文件添加到项目中去

为了简单化,暂不进行错误处理
在创建sock之前先要初始化
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2),&wsaData);
创建套接字
SOCKET sockSrv = socket(AF_INET, SOCK_STREAM, 0);

AF_INET是address family internet的缩写
SOCKADDR_IN addrSrv;
SOCKADDR_IN结构包括地址簇,端口号,IP地址,填充位
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
INADDR_ANY表示不限制连接IP
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(1986);
创建TCP程序的步骤
bind(sockSrv,(SOCKADDR *) &addrSrv,sizeof(SOCKADDR));
listen(sockSrv,5);

htonl 是host to network long的缩写

一直等待客户端发送消息
while(true)
 { SOCKET sockConn = accept(sockSrv,(SOCKADDR *)&addrClient,&len);
  char sendBuf[100]="服务端发送给客户端";
  std::cout<<sendBuf<<endl;  
  send(sockConn,sendBuf,strlen(sendBuf)+1,0);
  char recvBuf[100];
  recv(sockConn,recvBuf,100,0);  
  std::cout<<recvBuf<<endl;
  closesocket(sockConn);
 }

sendBuf是发送给客户端的数据
recvBuf是接受的到的数据
完成源码
#include <Winsock2.h>
#include <iostream>.
#pragma  comment(lib,"ws2_32.lib")
using namespace std;
int main()
{
 WSADATA wsaData;
 WSAStartup(MAKEWORD(2,2),&wsaData);
 SOCKET sockSrv = socket(AF_INET, SOCK_STREAM,  0); 
    SOCKADDR_IN addrSrv;  
 addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
    addrSrv.sin_family = AF_INET;
 addrSrv.sin_port = htons(1986);
 cout<<htons(1986);
    bind(sockSrv,(SOCKADDR *) &addrSrv,sizeof(SOCKADDR));
    listen(sockSrv,5);
 SOCKADDR_IN addrClient;
 int len = sizeof(SOCKADDR);
 while(true)
 {
 SOCKET sockConn = accept(sockSrv,
 (SOCKADDR *) &addrClient,&len);
 char sendBuf[100]="服务端发送给客户端";
    std::cout<<sendBuf<<endl;
    send(sockConn,sendBuf,strlen(sendBuf)+1,0);
 char recvBuf[100];
 recv(sockConn,recvBuf,100,0);
    std::cout<<recvBuf<<endl;
 closesocket(sockConn);
 }
 return 0;
}
在VC++2005下调试通过


原文:http://blog.csdn.net/flyfish1986/article/details/3240814

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值