char-VS2010下编写基于TCP的网络应用程序运行出现乱码,一堆“烫”字,求高手救命

问题描述

VS2010下编写基于TCP的网络应用程序运行出现乱码,一堆“烫”字,求高手救命
客户端:
#include
#include
#pragma comment(libws2_32.lib"")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1 1 );err = WSAStartup( wVersionRequested &wsaData );if ( err != 0 ) {    return;}if ( LOBYTE( wsaData.wVersion ) != 1 ||    HIBYTE( wsaData.wVersion ) != 1 ) {        WSACleanup( );        return; }SOCKET sockClient=socket(AF_INETSOCK_STREAM0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(""127.0.0.1"");addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);connect(sockClient(SOCKADDR*)&addrSrvsizeof(SOCKADDR));char recvBuf[100];recv(sockClientrecvBuf1000);recvBuf[100]='';printf(""%sn""recvBuf);send(sockClientThis is lisi""strlen(""This is lisi"")+10);closesocket(sockClient);WSACleanup();

}
服务器端:
#include
#include
#pragma comment(libws2_32.lib"")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1 1 );err = WSAStartup( wVersionRequested &wsaData );if ( err != 0 ) {    return;}if ( LOBYTE( wsaData.wVersion ) != 1 ||    HIBYTE( wsaData.wVersion ) != 1 ) {        WSACleanup( );        return; }SOCKET sockSrv=socket(AF_INETSOCK_STREAM0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);bind(sockSrv(SOCKADDR*)&addrSrvsizeof(SOCKADDR));listen(sockSrv5);SOCKADDR_IN addrClient;int len=sizeof(SOCKADDR);while(1){    SOCKET sockConn=accept(sockSrv(SOCKADDR*)&addrClient&len);    char sendBuf[100];    sprintf(sendBufWelcome %s to http://www.sunxin.org""        inet_ntoa(addrClient.sin_addr));    send(sockConnsendBufstrlen(sendBuf)+10);    char recvBuf[100];    recv(sockConnrecvBuf1000);    recvBuf[100]='';    printf(""%sn""recvBuf);    closesocket(sockConn);}

}

解决方案

一堆“烫”字是很经典的错误,因为VC++的调试程序在运行的时候会将分配的内存全部初始化为0xCC,而0xCCCC正好是烫的内码。
这个错误说明你的数据没有正确写入内存。

解决方案二:
将 recvBuf 变量的内容在定义后,使用前请清零。

解决方案三:
数组没有初始化,编译器帮你默认初始化。或者数组越界。
主要就是检查你的发送,接收数据格式。最好都用字符数组

时间: 2024-12-05 08:54:07

char-VS2010下编写基于TCP的网络应用程序运行出现乱码,一堆“烫”字,求高手救命的相关文章

C语言编写基于TCP和UDP协议的Socket通信程序示例_C 语言

Tcp多线程服务器和客户端程序服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #define PORT 8082 #define BUFSIZE 512 char

Linux下实现基于多线程的echo程序

准备开始写一些Linux 下网络编程以及多线程的blog,就从这个简单的echo程序开始吧. 在echo的服务端使用多线程与客户进行通信,可以实现一个服务端程序同时连接多个客户的功能.那么,到底在服务端要有多少个线程呢? 答案是:1+1+n.一个主线程,一个监听(listen)线程,与n个客户进行通信的n个线程. 服务端代码: #include "../unp.h" #include <pthread.h> void* str_echo(void* argv) { int

pocket c# 在ppc上直接编写基于.net的c#程序,有问题请帮我。

问题描述 今天我下载到了一个叫做pocketc#的程序,通过这个程序我可以在我的ppc手机上编写程序,但是我在按照文档说的方法安装后,测试我安装是不是正确的时候,不好的事情发生了,我始终无法编译例子程序,他总是给我说:csantcannotexecute,我安装的路径是在programefilespocketc#中,我看到文档中说路径不能有空格,我就将pocketc#移动到根目录下,并将目录改为pocketc#去除了空格,但是这样问题还是一样出现了.因为我是通过pocketc#ide来进行编译的

关于基于TCP网络编程程序死掉问题。

问题描述 服务器点击运行后程序死掉,不知何原因.关键问题在服务器类中的开启线程方法中出了问题.直接上代码,希望高手能指点下迷津,说出错误的原因,感激不尽.服务器类:importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.IOException;importjava.net.ServerSocket;importjava.net.Socket;importjavax.swing.JButt

用开源工具创建BlackBerry应用程序,第3部分 构建社交网络应用程序

在数字时代,社交网络应用程序对消费者和业务市场的影响是最有吸引力的 奇迹之一.营销专家改变了与潜在客户打交道的方式,具有相同志趣的群体能够 快速组建起来,这都与社交网络分不开.2008 年秋季的美国总统竞选表明,社 交网络已经成为成功的政治竞选的一部分.社交网络与流行的.强大的 BlackBerry 平台的结合将是一个充满活力的组合.本教程是"用开源工具 创建 BlackBerry 应用程序"系列的第 3 部分,它探索了为何 BlackBerry 是编写和部署社交网络应用程序的强大移动

C#基于TCP协议的服务器端和客户端通信编程的基础教程_C#教程

运行在TCP之上常见的网络应用协议有比如HTTP.FTP.SMTP.POP3.IMAP. TCP是TCP/IP体系中最重要的传输协议,它提供全双工和可靠交付的服务,是大多数应用协议工作的基础. TCP是一种面向连接(连接导向)的,可靠的,基于字节流的传输层通信协议. TCP的工作过程 建立连接 传输数据 连接的终止 TCP的主要特点1.TCP是面向连接的协议 2.是端到端的通信.每个TCP连接只能有两个端点,而且只能一对一通信,不能点对多的 的直接通信 3.高可靠性 4.全双工方式传输 5.数据

用C#实现基于TCP协议的网络通讯

网络 TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,如www.yesky.c

用C#实现基于用C#实现基于TCP协议的网络通讯

网络 TCP协议是一个基本的网络协议,基本上所有的网络服务都是基于TCP协议的,如HTTP,FTP等等,所以要了解网络编程就必须了解基于TCP协议的编程.然而TCP协议是一个庞杂的体系,要彻底的弄清楚它的实现不是一天两天的功夫,所幸的是在.net framework环境下,我们不必要去追究TCP协议底层的实现,一样可以很方便的编写出基于TCP协议进行网络通讯的程序. 要进行基于TCP协议的网络通讯,首先必须建立同远程主机的连接,连接地址通常包括两部分--主机名和端口,如www.yesky.c

大型分布式网站架构设计与实践 第一章《面向服务的体系架构(SOA)》1.1基于TCP协议的RPC

1.1基于TCP协议的RPC 1.1.1RPC名词理解 RPC的全称是Remote Process Call,即远程过程调用,它应用广泛,实现方式也很多,拥有RMI,WebService等诸多成熟的方案,在业界得到了广泛的应用.单台服务器的处理能力受硬件成本的限制,不可能无限制的提升,RPC将原来的本地调用转变为调用远端的服务器上的方法,给系统的处理能力和吞吐量带来了近乎无限制的提升,这是系统发展到一定阶段必然性的改革,也是实现分布式计算的基础. 如图1-2所示,RPC的实现包括客户端和服务端,