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