小编Bec*_*ker的帖子

将C++结构转换为C#

我有一个C++结构如下:

struct CUSTOM_DATA {
   int id;
   u_short port;
   unsigned long ip;
} custom_data;
Run Code Online (Sandbox Code Playgroud)

如何将其转换为C#struct,序列化并通过tcp socket发送?

谢谢!

UPD

那么C#代码会是什么?

[StructLayout(LayoutKind.Sequential)]
public struct CustomData
{
 public int id;
 public ushort port;
 public uint ip;
}

public void Send()
{
 CustomData d = new CustomData();
 d.id = 12;
 d.port = 1000;
 d.ip = BitConverter.ToUInt32(IPAddress.Any.GetAddressBytes(), 0);
 IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(d));
 Marshal.StructureToPtr(d, pointer, false);
 byte[] data_to_send = new byte[Marshal.SizeOf(d)];
 Marshal.Copy(pointer, data_to_send, 0, data_to_send.Length);
 client.GetStream().Write(data_to_send, 0, data_to_send.Length);
}
Run Code Online (Sandbox Code Playgroud)

c# c++ struct

7
推荐指数
1
解决办法
9071
查看次数

发送和接收int C++

如何向服务器发送4个字节int,在服务器端将此缓冲区转换为int.

客户端:

void send_my_id()
{
 int my_id = 1233;
 char data_to_send[4];
 // how to convert my_id to data_send?
 send(sock, (const char*)data_to_send, 4, 0);
}
Run Code Online (Sandbox Code Playgroud)

服务器端:

void receive_id()
{
 int client_id;
 char buffer[4];
 recv(client_sock, buffer, 4, 0);
 // how to conver buffer to client_id? it must be 1233;
}
Run Code Online (Sandbox Code Playgroud)

c++ sockets int

4
推荐指数
1
解决办法
1万
查看次数

选择()不适合我

我有一个问题,我使用select函数等待我可以在服务器端读取收到的数据,但它的工作错误,就像我什么也没收到,超时通过.

服务器端代码:

 int fd = accept(sockfd, addr, addrlen);
 if(fd > 0)
 {
     struct timeval tv;
     fd_set rfds;
     FD_ZERO(&rfds);
     FD_SET(fd, &rfds);

     tv.tv_sec = 5;
     tv.tv_usec = 0;
     // wait when i can read data
     int ret_select = select(1, &rfds, (fd_set *) 0, (fd_set *) 0, &tv);
     if(ret_select > 0)
     {
         // data ready to be readed. NEVER HERE!
     }
     else
     {
        // nothing. ALWAYS HERE
     }
    }
Run Code Online (Sandbox Code Playgroud)

客户端:

int ret = connect(s, name, namelen);
if(ret == 0)
{
 struct …
Run Code Online (Sandbox Code Playgroud)

c++ select function

3
推荐指数
1
解决办法
898
查看次数

从套接字C++部分接收数据包

我有一个麻烦,我的服务器应用程序发送8字节长度的数据包 - AABBCC1122334455但我的应用程序分两部分收到此数据包,AABBCC1122334455通过"recv"函数,我该如何解决?

谢谢!

c++ sockets network-programming packet

1
推荐指数
1
解决办法
2100
查看次数

标签 统计

c++ ×4

sockets ×2

c# ×1

function ×1

int ×1

network-programming ×1

packet ×1

select ×1

struct ×1