| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1451 人关注过本帖
标题:我写的socket程序,在自己一台机器上可以通话,链到局域网不能连接,请问原 ...
只看楼主 加入收藏
carmeloyin
Rank: 3Rank: 3
来 自:西安
等 级:论坛游侠
帖 子:161
专家分:157
注 册:2008-12-2
结帖率:91.67%
收藏
已结贴  问题点数:20 回复次数:4 
我写的socket程序,在自己一台机器上可以通话,链到局域网不能连接,请问原因
首先,问题不是在127.0.0.1上,换IP也不能在2台机器上
1个是client端  1个是service端
cpp文件在附件中
service:
程序代码:

#include<iostream.h>
#include<winsock2.h>                 //winsock头文件
#pragma comment(lib,"ws2_32.lib")    //winsock库

void main()
{
    //调用WSAStartup初始化Winsock库
    WSADATA wsaData;
    ::WSAStartup(
        MAKEWORD(2,0),       //版本号为2.2
        &wsaData);           //WSADATA结构体
    //创建套接字sService,用来等待客户到来的监听链接
    SOCKET sService = socket(
        AF_INET,    //协议族
        SOCK_STREAM,  //tcp流
        0);          
    cout<<"create socket successful !"<<endl;
    //调用bind()绑定端口和地址
    sockaddr_in sctaddr;
    sctaddr.sin_family = AF_INET;  //协议族,Winsock中必须为AF_INET
    sctaddr.sin_port = htons(8080); //bind端口
    sctaddr.sin_addr.S_un.S_addr = inet_addr("219.245.96.165"); //本地任意IP地址
    bind(
        sService,               //套接字
        (sockaddr*)&sctaddr,   //绑定的地址
        sizeof(sockaddr));     //地址结构大小
    cout<<"bind socket successful !"<<endl;

    //调用listen()开始监听
    listen(
        sService,
        2);           //可以链接的最大客户端数量
    cout<<"listen socket successful !"<<endl;
    sockaddr_in addrremote;  //远程地址
    int nLen = sizeof(addrremote);  //sockaddr_in结构长度
    
        //调用accept()接受新链接,得到新客户端套接字sClient
        SOCKET sClient = accept(
            sService,   //监听的服务器套接字
            (sockaddr*)&addrremote,  //远程客户端地址
            &nLen);  //接受地址结构大小
    cout<<"accept socket successful !"<<endl;
while(1)
    {
        //调用send() recv()收发信息
        
        char bufrecv[1024] = {0};
        recv(
            sClient,  //客户端套接字
            bufrecv,   //接受数据缓冲区
            sizeof(bufrecv),   //buf大小
            0);
        //打印收到的消息
        cout<<bufrecv<<endl;  
        
        
        char bufsend[1024] = {0};
        cout<<"Service:";
        cin>>bufsend;
        cout<<endl;
        send(
            sClient,  
            bufsend,     //发送内容
            sizeof(bufsend),  //发送内容大小
            0);
        
    }
    //关闭套接字
    closesocket(sClient);
    //关闭服务器监听套接字
    closesocket(sService);

    WSACleanup();
}


client端:
程序代码:
#include<iostream.h>
#include<winsock2.h>                 //winsock头文件
#pragma comment(lib,"ws2_32.lib")    //winsock库

void main()
{
    //调用WSAStartup初始化Winsock库
    WSADATA wsaData;
    ::WSAStartup(
        MAKEWORD(2,0),       //版本号为2.2
        &wsaData);           //WSADATA结构体

    //创建套接字sListen,用来等待客户到来的监听链接
    SOCKET sClient = socket(
        AF_INET,    //协议族
        SOCK_STREAM,  //tcp流
        0);      

    //调用connect()链接到服务器
    sockaddr_in addrService;
    addrService.sin_family = AF_INET;   //协议族
    addrService.sin_port = htons(8080);  //端口
    addrService.sin_addr.S_un.S_addr = inet_addr("219.245.96.165");  //服务器IP地址
    connect(
        sClient,     //客户端套接字
        (sockaddr*)&addrService,   //服务器端地址
        sizeof(sockaddr));   //地址结构大小
while(1)
{
    //调用send() recv()收发信息
    

    send(
        sClient,
        "I am Client,I connect you",
        sizeof("I am Client,I connect you"),
        0);
    

    char bufrecv[1024] = {0};
    recv(sClient,
        bufrecv,
        sizeof(bufrecv),
        0);
    cout<<bufrecv<<endl;
}

    //关闭套接字
    closesocket(sClient);

    WSACleanup();
}
搜索更多相关主题的帖子: 局域网 
2011-03-23 18:05
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:10 
你单步调一下,看看到那停了,别调个函数就说成功,你得判断一下到底成功了没。另一台机子上有编译器的话就同时调看看。

离恨恰如春草,更行更远还生。
2011-03-23 19:36
debroa723
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:10 
检查防火墙或是相应端口是否开放了.
2011-03-25 20:53
smilekurt
该用户已被删除
收藏
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2011-06-06 18:11
xiaobai1593
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2011-2-25
收藏
得分:0 
8080端口不是被WWW使用了么?感觉端口问题
2011-07-03 11:25
快速回复:我写的socket程序,在自己一台机器上可以通话,链到局域网不能连接,请 ...
数据加载中...
 
   



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

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