我用vc建立一个控制台程序,支持mfc,程序很简单,但是运行出错,请大家帮我看看
这是程序段,编译通过,运行出错,是为什么啊?
char *str;
int ret;
str = NULL;
cout<<"input your msg : ";
cin>>str;
cout<<"\n";
if (ret = mysocket.SendTo (str,strlen (str),10000,"192.168.1.157",0) ==0 )
cout<<"Send Message Success!\n";
else
cout<<"Send Message Failed!\n";
mysocket.Close ();
问题点数:20、回复次数:6Top
1 楼YP2002CN(混世阿呆)回复于 2002-04-11 17:37:20 得分 3
是不是mysocket.Close ();出现问题了..(程序执行后,close的位置是不是有问题).还有mysocket是什么类的?(关注).其实我也不知道..瞎菜Top
2 楼feng_sky(日三而省.)回复于 2002-04-11 17:40:10 得分 3
程序主体没有错,应是mysocket.SendTo 和mysocket.Close出了问题。
这两个是不是CSOCKET类?
你可以直接用WSAWINSOCKET来作。
VersionRequested = MAKEWORD(VERSION_MAJOR, VERSION_MINOR);
Error = WSAStartup(VersionRequested, &WsaData);
socketfh = WSASocket(PF_INET, SOCK_STREAM, 0, NULL, 0, 0);
if (socketfh == INVALID_SOCKET) {
printf("open_socket :: open socket error\n%d",socketfh);
return(-1);
}SockAddr.sin_family = AF_INET;
SockAddr.sin_port = htons(port);
SockAddr.sin_addr.s_addr = inet_addr(ip);
SockAddrLen = sizeof(SockAddr);
ConnectStatus = WSAConnect(socketfh, (struct sockaddr *)&SockAddr, SockAddrLen,
NULL, NULL, NULL, NULL);
if (ConnectStatus == SOCKET_ERROR) {
Error = WSAGetLastError();
if (Error != WSAEWOULDBLOCK) {
printf(" make_sckt ::socket Connect failed. Error code: [%d]\n", Error);
return(-1);
}
}
printf("make_sckt ::make_sckt id is [%d]\n",socketfh);
return((int )socketfh) ;Top
3 楼wsjdouble(废墟)回复于 2002-04-11 20:12:34 得分 3
应该是if语句写错,
你试试这样写看可不可以
if( ( ret = mysocket.SendTo (str,strlen (str),10000,"192.168.1.157",0) ) ==0 )Top
4 楼wx_zzm()回复于 2002-04-11 20:25:05 得分 3
char *str没有分配内存空间
Top
5 楼lgqzlx(Gary li)回复于 2002-04-11 20:48:28 得分 4
同意wx_zzm() 的看法,应该用char buf[256]Top
6 楼qiuanhong(练从难处练,用从易处用)回复于 2002-04-11 21:02:19 得分 4
没有分配空间:
str = new char[255];
Top




