c++ socket-C++socket数据接收处理问题

问题描述

C++socket数据接收处理问题

1.能够点了按钮之后能够一直接收发送过来的单行数据
2.能把接收的数据处理好了之后存到另外定义的数组或list中去
3.那个线程应该如何定义程序才能执行
 
SOCKET sHost;
  WSADATA wsd;
  SOCKET sServer;
  SOCKET sClient;
  SOCKADDR_IN addrServ;
  void CMyDlg::OnRev()
  {
  #define BUF_SZIE 64
  #pragma comment(lib, "ws2_32.lib")
  char buf[BUF_SZIE];
  int retVal;
  if (WSAStartup(MAKEWORD(2,2), &wsd) != 0)
  {
  printf("WSAStartup failed!n");
  }
  sServer = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  addrServ.sin_family = AF_INET;
  addrServ.sin_port = htons(3000);
  addrServ.sin_addr.s_addr = INADDR_ANY;

  retVal = bind(sServer, (LPSOCKADDR)&addrServ, sizeof(SOCKADDR_IN));
  retVal = listen(sServer, 10);

  sockaddr_in addrClient;
  int addrClientlen = sizeof(addrClient);
  sClient = accept(sServer,(sockaddr FAR*)&addrClient, &addrClientlen);
?
  ZeroMemory(buf, BUF_SZIE);
  
  while(true)
  {
  retVal = recv(sClient, buf, BUF_SZIE, 0);
  if (SOCKET_ERROR == retVal)
  {
  printf("send failed!n");
  }
  else
  {
  ......
  }
  }
  
  closesocket(sClient);
  WSACleanup();
  }

求大神指点一二

  • List item
时间: 2024-11-03 11:33:09

c++ socket-C++socket数据接收处理问题的相关文章

VC socket编程,数据接收问题

问题描述 VC socket编程,数据接收问题 用VC socket编程时,用recv函数接收字符串数据,只能接收到前4个字符,多于4个字符的都是"烫"字乱码.这是什么问题?怎么解决? char cs[100]; case FD_READ: { CString num=""; //定义字符串,用于保存待显示字符 ::recv(s1,cs,strlen(cs),0); //接收来自客户端的字符串数据 GetDlgItem(IDC_TEXT)->GetWindow

Python中使用socket发送HTTP请求数据接收不完整问题解决方法_python

由于工作的需求,需要用python做一个类似网络爬虫的采集器.虽然Python的urllib模块提供更加方便简洁操作,但是涉及到一些底层的需求,如手动设定User-Agent,Referer等,所以选择了直接用socket进行设计.当然,这样的话,需要对HTTP协议比较熟悉,HTTP协议这里就不做讲解了.整个python的代码如下: #!/usr/bin env python import socket host="www.baidu.com" se=socket.socket(soc

编程-Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息)

问题描述 Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息) 只求发送数据部分和数据接收部分 TCP连接不要 客户端和服务器响应次数也不要 只求发送数据部分和数据接收部分(java发送c#接收) 解决方案 server: Java code public void handleConnection(Socket connection) { System.out.println("客户:" + connection.getInetAddress() +

linux编程-往socket发送大量数据,接收方无法读取到完整数据

问题描述 往socket发送大量数据,接收方无法读取到完整数据 大家有没有遇到一种情况,客户端往服务器的socket发送了一个很大的数据(3万+byte),在服务器那边read socket的时候没有读到所有的数据,服务器用while去读但是都无法读到客户端发过来的所有数据,读取socket fd的代码如图 解决方案 建议你从如下角度检查或修改代码: 你是否使用循环send,并确定3W+字节都已经发送? TCP传输数据会受网络影响,如果网络发生拥塞,3W+字节可能不会一次性全部到达,这样仍然可能

Android socket通信,数据读取。

问题描述 Android socket通信,数据读取. public class ChatRoom extends ActionBarActivity { protected TextView tv_chat_show; protected EditText ed_chat_input; protected Button btn_send; protected ActionBarActivity that; protected String receiverMsg; protected Stri

PHP 通过Socket收发十六进制数据的实现代码_php技巧

最近在php下做关于Socket通讯的相关内容,发现网络上好多人在了解如何进行16进制收发,研究了下,代码如下,欢迎拍砖. 复制代码 代码如下: <?php        $sendStr = '30 32 30 34 03 30 33';  // 16进制数据         $sendStrArray = str_split(str_replace(' ', '', $sendStr), 2);  // 将16进制数据转换成两个一组的数组         $socket = socket_c

PHP中向socket服务器收发数据

 代码如下 复制代码 /*socket收发数据     @host(string) socket服务器IP     @post(int) 端口     @str(string) 要发送的数据     @back 1|0 socket端是否有数据返回     返回true|false|服务端数据 */ function sendSocketMsg($host,$port,$str,$back=0){         $socket = socket_create(AF_INET,SOCK_STRE

socket传json数据包要怎么个流程

问题描述 socket传json数据包要怎么个流程 希望完成的结果是服务器上的输入数据可以可选择的显示在客户端的相应的显示窗口上.但是现在问题是socket传的是二进制数据,我前边打个包还要转成二进制,要用什么函数.socket的输入格式是怎么样的 解决方案 用的是什么语言啊?java的话直接toString().getBytes()就可以; 解决方案二: 用的什么语言,如果是java的话,用getbytes转换为字节数组 解决方案三: 应该是Java吧,建议用Gson或者Jackson

java socket 文件传输-java socket 传文件文件接收后不能打开

问题描述 java socket 传文件文件接收后不能打开 java socket传文件,客户端将文件读取到byte[]中,然后用Map对相关内容进行包装之后输出到服务器端,但服务器端读取文件内容的循环除第一次读取的Map是客户端写入过来的内容外,从第二次循环开始Map的内容都跟第一次一样的,请问怎么回事? 服务器端代码: `public void run() { ObjectInputStream is = null; OutputStream os = null; byte cache[]