SOCKET编程里send 和Receive函数的使用

来源:百度知道 编辑:UC知道 时间:2024/09/25 19:17:25
我用send()函数需要发送3个数据:一个二维数组,一个字符串,一个整型变量。 我定义了一个结构体:
typedef struct
{
BYTE temp[10][9];
int m;
CString strt;
}Sendj;
定义了两个结构体变量:Sendj TES,TEF;
发送的时候:csrev.Send(&TEF,300);(服务器)
接受的时候:clconect.Receive(&TES,300);
在发送接受的时候出错:说内存不能为“read”,或是一个DEBUG错误。
请高手帮帮忙,这个问题怎么解决,重新设计代码也行,只要能把三个数据传过去。
csrev.send(TEF,300)不行。TEF这个参数的类型必须是地址
2楼那种复制粘贴不要来了

结构传递需要引用吗?
以前自己写过1个FTP和HTTP的,也是SOCKET的
你试验下csrev.Send(TEF,300);看看,我只是好奇~

这可是我自己总结的,LZ不要误会哦~~!
1.简单服务器
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA sServer,sClient;
chat buf[1024];
int retVal;
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN addrServ;
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons(%%1);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败