首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ socket 将int型float型变量转为string型发送的程序错误有关问题

2012-10-08 
C++ socket 将int型float型变量转为string型发送的程序异常问题#include stdafx.h#include stdio.h#in

C++ socket 将int型float型变量转为string型发送的程序异常问题

#include "stdafx.h"
#include <stdio.h>
#include <iostream>  
#include <WinSock2.h>  
#include <string>
#pragma comment (lib, "ws2_32.lib")  

struct data  
{  
char ID[8] ;  
char Dist[8];  
};  



int main ()
{


unsigned int id(2);  
float dist(2.08890);  

char idstr[8];
char diststr[8];
sprintf(idstr,"%8d",id);
sprintf(diststr,"%8.4f",dist);


struct data dataSendToServer = {*idstr,*diststr};

SOCKET sockClient;

// 合成套接字版本.  
WORD wVersionRequested = MAKEWORD(2, 0) ;  
WSADATA wsaData ;  

// 加载套接字库版本.  
if (WSAStartup(wVersionRequested, &wsaData) != 0)  
{  
return 0 ;  
}  
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0)  
{  
WSACleanup() ;  
return 0 ;  
}  
// 创建套接字.  
sockClient = socket(AF_INET, SOCK_STREAM, 0) ;  
// 向服务器发出连接请求.  
SOCKADDR_IN addrServer ;  
addrServer.sin_addr.S_un.S_addr = inet_addr("192.168.0.102") ;  
addrServer.sin_family = AF_INET ;  
addrServer.sin_port = htons(7100) ;  
while(!connect(sockClient, reinterpret_cast<SOCKADDR *> (&addrServer), sizeof(addrServer)))
{
};


// 向服务器发送数据.  
send(sockClient, reinterpret_cast<char*> (&dataSendToServer), sizeof (dataSendToServer), 0) ;  

}

各位大侠帮忙看下这个程序哪里有错误啊,编译没问题但是运行时会有错误,程序异常。。 vs2008,多谢各位啊


[解决办法]
这有问题struct data dataSendToServer = {*idstr,*diststr};

这样修改:
struct data dataSendToServer;

sprintf(dataSendToServer.ID,"%8d",id);
sprintf(dataSendToServer.Dist,"%8.4f",dist);

这里有许多WinSock示例代码,你可以参考:http://download.csdn.net/detail/geoff08zhang/4571358

热点排行