用VC++写网络编程中遇到的问题

基于UDP聊天的程序:XP下的vC++6.0写的。接收端代码:#include<Winsock2.h>#include<stdio.h>voidmain(){//加载套接... 基于UDP聊天的程序:XP下的vC++ 6.0写的。
接收端代码:
#include <Winsock2.h>
#include <stdio.h>

void main(){
//加载套接字
WORD wVersionRequested=MAKEWORD(1,1);
WSADATA WSAData;
int error;
error=WSAStartup(wVersionRequested,&WSAData);
if(0!=error){
printf("加载失败!\n");
}

//创建套接字
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
//绑定
SOCKADDR_IN sockAddr;
sockAddr.sin_family=AF_INET;
sockAddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
sockAddr.sin_port=htons(7355);
while(1){
bind(sockSrv,(SOCKADDR*)&sockAddr,sizeof(SOCKADDR));

char recvBuf[100];
SOCKADDR_IN sockAddrClient;
int len=sizeof(SOCKADDR);
//接收数据
recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&sockAddrClient,&len);
printf("%s\n",recvBuf);
//关闭套接字
}
closesocket(sockSrv);

}

发送端代码:
#include <Winsock2.h>
#include <stdio.h>
void main(){
//加载套接字
WORD wVersionRequested=MAKEWORD(1,1);
WSADATA WSAData;
int error;
error=WSAStartup(wVersionRequested,&WSAData);
if(0!=error){
printf("加载失败!\n");
}
while(1){
char sendBuf[100];
scanf("%s\n",sendBuf);
//创建套接字
SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);
//发送数据
SOCKADDR_IN sendAddr;
sendAddr.sin_family=AF_INET;
sendAddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
sendAddr.sin_port=htons(7355);

sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&sendAddr,sizeof(SOCKADDR));
//关闭套接字

closesocket(sockClient);
}
}

问题:
分别起动它们后,
发送端程序中,输入a,然后回车;在接收端中没有看到有a字符打印出来;
在发送端再输入b,然后回车,在接收端中打印出a;
在发送端再输入c,然后回车,在接收端中打印出b;
在发送端再输入d,然后回车,在接收端中打印出c;

怎样才可以在发送端中输入asd,然后回车后,在接收端立马打印出asd,?????
该程序运行正常,只是运行结果不理想,具体的请仔细阅读以上的问题部分,谢谢!

换成基于TCP的代码运行结果也和上面的类似!我这里写不上去了,好像有个那个循环就会有这样的问题,把循环去掉就没事。
展开
 我来答
zyq_07_28
2009-05-15 · TA获得超过258个赞
知道小有建树答主
回答量:185
采纳率:0%
帮助的人:0
展开全部
本来udp传输就不能保证马上打印出来, 你输入a, 再输入b, 它都不打印, 到输入c再打印a也是有可能的. 用listen, accept, recv, send应该可以

////////////////////////////////////////////////////////////////////
你的代码我调过了, 因为发送端scanf("%s\n",sendBuf);多加了个\n, 所以第一次输入的时候scanf没有返回. 去掉\n就好了
a31232710
2009-05-14 · TA获得超过5816个赞
知道大有可为答主
回答量:6091
采纳率:100%
帮助的人:0
展开全部
哦,出问题拉
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sofdok
2009-05-14 · TA获得超过326个赞
知道小有建树答主
回答量:465
采纳率:0%
帮助的人:347万
展开全部
问题出在哪里呢?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式