急!!TCP两地机器通讯问题!~~
开启服务器程序后客户机IP设为127.0.0.1进行本地测试
可以正常通讯
可是把客户机程序发到同学机器上 IP换为我的地址时
通讯失败
我机器上的服务器程序收不到请求
他的客户机上显示一行多的“烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫。。”最后还跟个字符笑脸[em04]
请高手不吝赐教~~~感激不尽~!![em02] 楼主说的不清楚,开启服务器程序是什么程序呢?客户端和服务器端是楼主自己写的吗? 开始学socket编程
照着孙鑫教程上写的
服务端代码:
#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 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );//终止对winsock的使用
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(6001);
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,"客户:%s连接到服务器",
inet_ntoa(addrClient.sin_addr));
send(sockConn,sendBuf,strlen(sendBuf)+1,0);
char recvBuf[200];
recv(sockConn,recvBuf,strlen(recvBuf),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 ) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1) {
/* Tell the user that we could not find a usable */
/* WinSock DLL. */
WSACleanup( );//终止对winsock的使用
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(6001);
connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
char recvBuf[100];
recv(sockClient,recvBuf,100,0);
printf("%s\n",recvBuf);
send(sockClient,"这是客户机发送的消息",strlen("这是客户机发送的消息")+1,0);
closesocket(sockClient);
WSACleanup();
} 是什么原因啊
局域网ip用172.30那个就可以么? 有没有波特率这一说,不明白...反正单片机扩展Ethernet的时候要设置波特率.... [quote]原帖由 [i]hetihit[/i] 于 2008-4-14 09:59 发表 [url=http://bbs.ghtt.net/redirect.php?goto=findpost&pid=1187516&ptid=101434][img]http://bbs.ghtt.net/images/common/back.gif[/img][/url]
有没有波特率这一说,不明白...反正单片机扩展Ethernet的时候要设置波特率.... [/quote]
[em05] 这个。。。。。
不会这么复杂吧。。。。 无热心人么~~~~~~[em01] 计算机网络与通信第三版有个java版的tcp通信程序~
实现的简单功能是小写变大写~
也许,可以参考下? java的创建套接字函数是
Socket clientSocket=new Socket("hostname",6000);
书上的例子中,告诉我们怎么用
可是hostname在局域网里怎么设啊
为何无法连接呢 很明显是数据没传输过去,读空内存时出现乱码的现象。仔细调试一下就能解决的。 TCP通讯没有波特率设置一说
现在问题是,两地通讯 (我理解为你在本校,而你同学在外地)
但你用的是内网IP,不是公网的, 和你同学通讯的时候,不可能连接上的
除非网络中心给你做端口映射 [quote]原帖由 [i]p.m[/i] 于 2008-4-20 17:42 发表 [url=http://bbs.ghtt.net/redirect.php?goto=findpost&pid=1201247&ptid=101434][img]http://bbs.ghtt.net/images/common/back.gif[/img][/url]
TCP通讯没有波特率设置一说
现在问题是,两地通讯 (我理解为你在本校,而你同学在外地)
但你用的是内网IP,不是公网的, 和你同学通讯的时候,不可能连接上的
除非网络中心给你做端口映射 ... [/quote]
不是的
就是同一公寓同一层楼的啊
试了好几台机子了
都不能呢
郁闷坏了
程序难道有问题? [quote]原帖由 [i]p.m[/i] 于 2008-4-20 17:42 发表 [url=http://bbs.ghtt.net/redirect.php?goto=findpost&pid=1201247&ptid=101434][img]http://bbs.ghtt.net/images/common/back.gif[/img][/url]
TCP通讯没有波特率设置一说
现在问题是,两地通讯 (我理解为你在本校,而你同学在外地)
但你用的是内网IP,不是公网的, 和你同学通讯的时候,不可能连接上的
除非网络中心给你做端口映射 ... [/quote]
不知道如果有了路由表行不行? [quote]原帖由 [i]p.m[/i] 于 2008-4-20 17:42 发表 [url=http://bbs.ghtt.net/redirect.php?goto=findpost&pid=1201247&ptid=101434][img]http://bbs.ghtt.net/images/common/back.gif[/img][/url]
TCP通讯没有波特率设置一说
现在问题是,两地通讯 (我理解为你在本校,而你同学在外地)
但你用的是内网IP,不是公网的, 和你同学通讯的时候,不可能连接上的
除非网络中心给你做端口映射 ... [/quote]
我用MFC重做了一遍后
局域网内通信已经可以了
但是如你所言
我要和外网同学连接
该如何做呢?
比如qq是如何实现的
页:
[1]