首页 > 解决方案 > Python 字符缓冲区

问题描述

在 C 代码中,我编写了一个名为 read_ascii(data, recv_buf, &flag_end) 的子函数,用于将字符从数据读取到缓冲区 recv_buf。在主程序中:

int socket_in , new_sd , cc, go, flag_end;
struct sockaddr_in server , client;
char recv_buf[1024];
cc = sizeof(struct sockaddr_in);
data = accept(socket_in, (struct sockaddr *)&client, (socklen_t*)&cc);
while(1)
{ read_ascii(data, recv_buf, &flag_end);
  if (strncmp(recv_buf, "A", 1) == 0)
        {
        printf ("A");
        write(data, "ok", 2);
        }
  else if (strncmp(recv_buf, "B", 1) == 0)
        {
        printf ("B");
        write(data, "ok", 2);
        }
  else 
        {
        write(data, "FAIL", 4);
        }
  }

在 Python中我知道不需要像 C 那样读取字符,我们可以recv_buf = "\0" * 1024根据this定义 -- 。

但似乎每次我读取 TCP/IP 的值时,recv_buf 缓冲区都会被覆盖

while True:
   c, addr = server_tcp.accept()     # Establish connection with client.
   data = server_tcp.recv(1024)
   if 'A' == data 
        n=server_tcp.send('OK')
   elif 'B'== data
        n=server_tcp.send('OK')
   else:
        print ('I did not get the right command DEF')
   break
 server_tcp.close()

因此,当客户端发送 B 然后发送 A 时,我确实从服务器(好的,好的)得到了我认为的好的答案。任何帮助,将不胜感激。谢谢

标签: pythontcpcharbufferstrcmp

解决方案


推荐阅读