300分倾家荡产只为SOCKET!欢迎进入点击参与有分!(300分)

  • 主题发起人 主题发起人 攸游
  • 开始时间 开始时间
To:chenxz:
那能不能再指引一下
sockaddr_in = record
case Integer of
0: (sin_family: u_short;
sin_port: u_short;
sin_addr: TInAddr;
sin_zero: array[0..7] of Char);
sa_family: u_short;
sa_data: array[0..13] of Char) end;
WSAData=recordwVersion: Word;
wHighVersion: Word;
szDescription: array[0..WSADESCRIPTION_LEN] of Char;
szSystemStatus: array[0..WSASYS_STATUS_LEN] of Char;
iMaxSockets: Word;
iMaxUdpDg: Word;
lpVendorInfo: PChar;);
end;
我要指定哪些值才能找到服务器??
 
最简单的client:
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1) {
perror("socket");
//exit(1);
}
addr.sin_family = AF_INET;

addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr(host);
bzero(&(addr.sin_zero),8);
if(connect(sockfd,(struct sockaddr *)&addr,sizeof(struct sockaddr))==-1) {
perror("connect");
// exit(1);
}
*/
if (send(sockfd,sendstr,MsgLen,0)==-1)
perror("send");
 
上面我曾发过一个最简单的 socket 通讯例程
那些条件都是必需的, 建议你熟悉一下socket流程吧
网上有很多资料 这有其中一个不错的
http://exodus.cs.ccu.edu.tw/~rhhwang/net98/winsock.doc


 
关注,收藏
 
我看你应该搞清几下几相概念:
1、Socket客户端程序要连接上服务器端程序,需要该服务器端程序的地址和端口号;
2、服务器端程序的工作流程(以流套接字为例):socket -> bind -> listen -> accept
-> read/write;
客户端的工作流程是:socket -> connect -> write/read;
3、编写WinSock程序需要先初始化WinSock动态连接库,以确定要用哪个版本的WinSock,你
是否忽略了这一步?

也许我看得不够仔细,你总是说连不上,但错误是出在哪一步呢?(按照上面的工作流程)
 
TO :Sachow:
首先谢谢你的指点,
在局域网中我写的这套程序没有任何问题:通常我们只要指定服务器的地址和端口号
就可以,然后进行相关发送接收或是读写操作!
在我的这套程序中我是用WINSOCK API 做的,也是如你所讲的一样来操作,
上面我还贴了一点就是两端连接前的代码,其中有相关设置,我想可能就是与
局域网中不同吧总连接不上服务器,也在测试中出现过以下情况:
1、两台同时拨号,IP自动获取,取分配的临时IP 运行,连接不上;
2、一台拨号做服务器而此时客户端也放在本机上马上连接上并能进入主题;
我到现在总是在问各位就是一点我服务器bind()时要设置哪些参数才能有效
标识出了以便客户端找到它!
说说你的观点吧!
 
很急却没有人指点,唉!要快下班了!
 
明白了 你的问题
我想如果局域网通而广域网不通的话,那应该说程序没问题,那就必须考虑通讯路由的
问题了
先看socket服务两端通讯是否正常 (ping) 证明线路有无问题
正常的话 然后改变一下socket的端口号再拭一下
或者用 telnet ip地址 :端口号 的方式看一下服务器端口是否可用, 有时某一端防火墙可能会
封掉某些服务端口
网络延迟的问题, 有时由于网络问题, 延迟一样造成通讯失败, 建议延长延时再一下

祝你好运了
调通讯有时是很麻烦的










 
TO:ramble
我们能聊吗,最好用QQ ,我发现我有一大堆问题给你!
QQ:77169992
 
再等半个小时,没人回答还是去请假逛图书馆!
 
明天上班我继续等您的指点!
 
sorry 我这还没装qq 呢, 一直没空, 也懒得做
不过, 你的问题只要冷静下来, 慢慢分析总会解决的, 你的本地不是已经调通了么
最简化任务,排除可能,缩小范围, 就能决问题
good luck
 
经过昨天一天的等待,问题业已解决了一大半吧,在此我也忠心感谢给予帮助我的朋友,
分就给你们全部发完了!本人接受答案!
 
后退
顶部