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 还是不行
这到底要怎么办 ?? 到底是哪里出了错呢???请高手帮忙 感谢!!!