| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 850 人关注过本帖
标题:孙鑫第十四章那个我咋编译不成功?
只看楼主 加入收藏
何少仪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:170
注 册:2010-3-6
结帖率:94.44%
收藏
已结贴  问题点数:50 回复次数:8 
孙鑫第十四章那个我咋编译不成功?
服务端:
程序代码:
#include <winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(1,1);

err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0) return;
if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
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)
{
char sendBuf[500];
char recvBuf[500];
SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);

sprintf(sendBuf,"Welcome %s to XXX",inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
recv(sockConn,recvBuf,100,0);
printf("%s",recvBuf);
closesocket(sockConn);
}

}

客户端:
程序代码:
#include <winsock2.h>
#include <stdio.h>

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(1,1);

err = WSAStartup( wVersionRequested, &wsaData );
if( err != 0)
{
return ;
}
if( LOBYTE( wsaData.wVersion ) != 1 || HIBYTE(wsaData.wVersion) != 1)
{
WSACleanup();
return ;
}

SOCKET sockClient = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr = inet_addr("172.0.0.1");
addrSrv.sin_family = AF_INET;
addrSrv.sin_port = htons(6000);

connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));  //和他的一样,调式是这里没链接上,没错,就是什麽也接收不到
char recvBuf[100];

recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"This is the client",strlen("This is client")+1,0);

closesocket(sockClient);
WSACleanup();
}
搜索更多相关主题的帖子: 孙鑫 编译 
2010-10-30 23:34
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:0 
dll有包含么??
2010-10-31 09:17
何少仪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:170
注 册:2010-3-6
收藏
得分:0 
以下是引用shafeilong在2010-10-31 09:17:49的发言:

dll有包含么??

包含

[b] 你要有勇气去听从你直觉和心灵的指示,所有其他的事情都是次要的。
2010-10-31 12:27
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:0 
我这里都可以运行哦  你的错误代码是什么?
2010-10-31 20:44
shafeilong
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:236
专家分:1434
注 册:2009-3-21
收藏
得分:20 
呵呵 #include <winsock2.h>
这里错了   应该是Win   要大写
LINK 那边要包含ws2_32.lib
2010-10-31 21:18
guer168
Rank: 2
等 级:论坛游民
帖 子:46
专家分:37
注 册:2010-3-19
收藏
得分:15 
//要连接上ws2_32.lib
#include<Winsock2.h>
#include<stdio.h>
void main()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested = MAKEWORD( 1, 1 );
    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
        
        return;
    }
    if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
        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];
        char recvBuf[100];
        sprintf(sendBuf,"Welcone %s to http://www.,
            inet_ntoa(addrClient.sin_addr));
        send(sockConn,sendBuf,strlen(sendBuf)+1,0);
        
        recv(sockConn,recvBuf,100,0);
        printf("%s\n",recvBuf);
        closesocket(sockConn);
    }
}



#include<Winsock2.h>
#include<stdio.h>
void main()
{
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;
    wVersionRequested = MAKEWORD( 1, 1 );
    err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
        
        return;
    }
    if ( LOBYTE( wsaData.wVersion ) != 1 ||
        HIBYTE( wsaData.wVersion ) != 1 ) {
        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_family=AF_INET;
    addrSrv.sin_port=htons(6000);
    connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
    char recvBuf[100];
    recv(sockClient,recvBuf,100,0);
    printf("%s\n",recvBuf);
    send(sockClient,"This is zhangsan",strlen("This is zhangsan")+1,0);
    closesocket(sockClient);
    WSACleanup();

}


这样就可以了

淘宝:http://guer168.  百度有啊http://youa.baidu.com/shop/75fb2a3584ed3e7d5e1e752d?from=hi
2010-11-01 14:46
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:15 
首先将服务器地址改为127.0.0.1 (默认的本机地址)
其次将每个函数的返回值检查下,判断调用是否成功 SOCKET_ERROR
再者 cmd中 用netstat -na 查看6000这个端口号是否被占用 如被占用换个
最后貌似有的平台或者硬件影响会导致链接很慢 ,如没有出现错误码提示,那么耐心等个几分钟看看!
2010-11-01 20:01
何少仪
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:91
专家分:170
注 册:2010-3-6
收藏
得分:0 
已经解决啦

[b] 你要有勇气去听从你直觉和心灵的指示,所有其他的事情都是次要的。
2010-11-02 12:48
haipe
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2010-11-18
收藏
得分:0 
ws2_32.lib
2010-11-20 20:54
快速回复:孙鑫第十四章那个我咋编译不成功?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033582 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved