| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 649 人关注过本帖
标题:c语言的网络编程问题希望帮帮我 感谢
只看楼主 加入收藏
lixingying
Rank: 2
等 级:论坛游民
帖 子:45
专家分:27
注 册:2010-8-3
结帖率:40%
收藏
已结贴  问题点数:20 回复次数:3 
c语言的网络编程问题希望帮帮我 感谢
服务器端代码::
#include<stdio.h>
#include<Winsock2.h>
void main()
{
    WORD word;
    WSADATA wsadata;
    int err;
    word=MAKEWORD(2,2);
    err=WSAStartup(word,&wsadata);
    if(err!=0)
    {
        return;
    }
    if ( LOBYTE( wsadata.wVersion ) != 2||
        HIBYTE( wsadata.wVersion ) != 2 )
    {
        WSACleanup( );//如果高位字节不等于1和地位字节不等于1
        //就调用WSACleanup终止Winsock库的使用 然后调用return 返回
        return;
    }
    SOCKET sok=socket(AF_INET,SOCK_STREAM,0);
    SOCKADDR_IN sockadd;
    sockadd.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    sockadd.sin_family=AF_INET;
    sockadd.sin_port=htons(2005);
    bind(sok,(SOCKADDR*)&sockadd,sizeof(SOCKADDR));
    listen(sok,5);//监听
    SOCKADDR_IN addr;
    int len=sizeof(SOCKADDR);
    while(1)
    {
       SOCKET soke=accept(sok,(SOCKADDR*)&addr,&len);
       char str[100];
       sprintf(str,"%s",inet_ntoa(addr.sin_addr));
       printf("%s\n",str);
       send(soke,str,strlen(str)+1,0);
       char ch[100];
       recv(soke,ch,100,0);
       printf("%s\n",ch);
       closesocket(soke);
    }
}
客户端的代码::
#include<stdio.h>
#include<Winsock2.h>
void main()
{
    WORD word;
    WSADATA wsadata;
    int err;
    word=MAKEWORD(2,2);
    err=WSAStartup(word,&wsadata);
    if(err!=0)
    {
        return;
    }
    if ( LOBYTE( wsadata.wVersion ) != 2||
        HIBYTE( wsadata.wVersion ) != 2 )
    {
        WSACleanup( );//如果高位字节不等于1和地位字节不等于1
        //就调用WSACleanup终止Winsock库的使用 然后调用return 返回
        return;
    }
    SOCKET soke=socket(AF_INET,SOCK_STREAM,0);
    SOCKADDR_IN addr;
    addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    addr.sin_family=AF_INET;
    addr.sin_port=htons(2005);
    connect(soke,(SOCKADDR*)&addr,sizeof(SOCKADDR));

    char str[100];
    char str1[100];
    recv(soke,str,100,0);
    printf("%s\n",str);
    printf("请输入字符:");
    gets(str1);
    send(soke,str1,strlen(str1)+1,0);
    closesocket(soke);
    WSACleanup();

}
这是个 聊天程序 在本机上能运行 但是 把客户端发给 其他人 就和 我的本机不能建立连接了 也不能聊天
请问大虾 们 这个到底是什么原因,    addr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
这句里面到底 有每一问题 ,就算是 把127.0.0.1 改成了我的 实际IP地址:192.168.1.106 还是不行
这到底要怎么办 ?? 到底是哪里出了错呢???请高手帮忙 感谢!!!

搜索更多相关主题的帖子: c语言 网络编程 include 服务器 return 
2011-10-24 09:10
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:10 
前排占个座,中午给你看

为游戏狂~~!!    大家努力编哈!
2011-10-24 10:58
smallmoon521
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:517
专家分:1373
注 册:2008-4-21
收藏
得分:0 
从技术上讲,这个代码没有问题,可以实现联网。
象LZ说的,将客户端发送信息的IP改为192.168.1.106就可以了
LZ说的:
“这是个 聊天程序 在本机上能运行 但是 把客户端发给 其他人 就和 我的本机不能建立连接了 也不能聊天”
这个 “其他人” 指的是谁?外网还是局域网内的?

为游戏狂~~!!    大家努力编哈!
2011-10-24 12:06
ieczw
Rank: 2
等 级:论坛游民
帖 子:1
专家分:10
注 册:2011-10-24
收藏
得分:10 
这个想法好 借来用用
2011-10-24 16:33
快速回复:c语言的网络编程问题希望帮帮我 感谢
数据加载中...
 
   



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

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