60分!!C++关于网络编程方面!!

[复制链接]
查看11 | 回复3 | 2010-5-5 22:13:39 | 显示全部楼层 |阅读模式
一般的聊天分为两种模式,UDP和TCP,以TCP为例,A作为服务器端,首先建立自己的服务端,包括设置本机的通信地址,端口号,然后设置允许的最大访问数目,然后循环等待客户端的连接acceptB作为客户端,设置要连接的服务器的地址和端口,然后send发送信息,这时候服务器accept连接,然后recv客户端的数据。字符串的发送只需要把放到buffer里面,直接发送就可以了
回复

使用道具 举报

千问 | 2010-5-5 22:13:39 | 显示全部楼层
我简要说一下服务器端的吧,客户端的你也就懂了 基于TCP的网络编程 服务端 #include
//引入套接字库 #include
void main(){
//初始化,进行套接字版本协商 WORD wVersionRequested; WSADATA wsaData; int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {
return; }if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );return;}
//创建套接字 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(6000);//设置监听端口
//绑定套接字 bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
//监听 listen(sockSrv,5); SOCKADDR_IN addrClient; int len=sizeof(SOCKADDR); while(1) {
//连接SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);char sendBuf[100];sprintf(sendBuf,"How are you!",inet_ntoa(addrClient.sin_addr));//发送数据send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf[100];//接受数据recv(sockConn,recvBuf,100,0);printf("%s\n",recvBuf);//关闭套接字closesocket(sockConn); } } 客户端 #include
#include
void main(){ WORD wVersionRequested; WSADATA wsaData; int err;wVersionRequested = MAKEWORD( 2, 2 );err = WSAStartup( wVersionRequested, &wsaData ); if ( err != 0 ) {
return; }if ( LOBYTE( wsaData.wVersion ) != 2 ||
HIBYTE( wsaData.wVersion ) != 2 ) {
WSACleanup( );return;} SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv; addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); addrSrv.sin_port=htons(6000); addrSrv.sin_family=AF_INET; connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100]; recv(sockClient,recvBuf,100,0); printf("%s\n",recvBuf); send(sockClient,"Hehe,good!",strlen("Hehe,good!")+1,0); closesocket(sockClient); WSACleanup(); }}
回复

使用道具 举报

千问 | 2010-5-5 22:13:39 | 显示全部楼层
自己找资料看啊。找一本教程。不是几段话就能说明白的。简单的回答给你,你有可能还是不明白。看MSDN,找这些函数看:WSAStartupWSACleanuplistenbindaccept....学习能力很重要,如果学习过程中,遇到某个点,理解不了,可以发帖,发出具体的代码,大家都很乐于帮助的。
回复

使用道具 举报

千问 | 2010-5-5 22:13:39 | 显示全部楼层
去看孙鑫老师的《VC++深入详解》
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行