读书人

C++ socket 将int型float型变量转为st

发布时间: 2012-10-08 19:54:56 作者: rapoo

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

读书人网 >C++

热点推荐