关于c++ socket套接字
char buff[1024] = "hello,i am v \n";
char buff2[512];
cin >> buff2;
//strcpy(buff, buff2);
send(sclient, buff, strlen(buff), 0);
send(sclient, buff2, strlen(buff2), 0);
我想发送两部分数据给服务器端,可是只有第一部分能发出去,第二部分无论如何服务器端都接收不到,请问我这段代码有问题吗?非常感谢你们的回答,谢谢!
0

8个回答

你服务端是一直在等待吗?while循环监听等待?还是accept

1
me1171115772
v俊逸 谢谢你。在while循环里面不停地调用accept,请问这样有问题吗?
接近 4 年之前 回复

buff2中是什么内容,先打印看看。是不是根本没内容。还有send长度正确吗

1
me1171115772
v俊逸 谢谢啊,buff2里面有内容.^_^,不过这里的send长度有问题吗?
接近 4 年之前 回复
me1171115772
v俊逸 谢谢啊 不犯法
接近 4 年之前 回复

服务器代码有问题 发来看看

1
me1171115772
v俊逸 感觉好像还真的是服务器代码有问题 谢谢你啊.^_^
接近 4 年之前 回复

感觉没问题的样子,是不是服务端的问题?

1
me1171115772
v俊逸 恩恩 貌似就是~^_^
接近 4 年之前 回复

WSAGetLastError()看一下是否有错误,没错误那么是服务器端的问题(如接收完一次就不再接收了),要么是buff2中没数据。

1
me1171115772
v俊逸 buff2有数据...谢谢你啊^_^
接近 4 年之前 回复

Socket(套接字)

作者信息
肖进
单位:南京中萃食品有限公司 资讯部
邮箱:xiaoj@njb.swirebev.com
电话:025-58642091

与socket有关的一些函数介绍

1、读取当前错误值:每次发生错误时,如果要对具体问题进行处理,那么就应该调用这个函数取得错误代码。
int WSAGetLastError(void );
#define......
答案就在这里:Socket(套接字)
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

0

很有可能是因为协议没有把所有的数据发送完,而服务器端程序只读取了一次

0

接收端的recv是不是用多线程做的,能不能一直处于接收状态?还有cin命令有,你是不是从键盘输入了信息了?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C/C++ socket套接字详解(Windows)
一、编译环境本篇博客是在windows系统下的CodeBlocks环境下编写而成的,Linux系统以及其他编译环境暂不适用关于如何CodeBlocks如何安装和配置,可以参考链接(转自萤火虫塔莉):CodeBlocks的安装以及编译器的配置...
Linux C利用Socket套接字进行服务器与多个客户端进行通讯
服务器端 #include #include #include #include #include #include #include #include #include //服务器端 void *fun_thrReceiveHandler(void *socketInfo); void *fun_thrAcceptHandler(void *socketListen); /
socket(普通套接字、非阻塞套接字、IO多路复用)
何为socket socket是应用层与TCP/IP协议通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出...
Linux C语言编程-Linux网络通信--Linux上使用套接字(socket)来发送信息---知识点总结+实例
*********************注意:为了保证文章的完整性和全面性,作者会不定期对文章进行更新和修正********************* *相关软件的版本: gcc版本:gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52) 1.Socket相关概念: (1)套接字是什么?     套接字是一种通信机制这种通信机制不仅可
套接字socket(C/S架构通信)
本次实验主要实现的是回射客户/服务器。 意思就是客户端发送什么,服务器显示什么,并且在发送给客户端。 服务器端代码: #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h&g...
计算机网络:什么是套接字(Socket)?
网络套接字又叫网际插座,在英文中是Internet Socket。在网络中,套接字扮演的角色正如插座一样,它是一个端点,可以与网络中的其它套接字建立连接。微软计算机辞典对于套接字给出的解释如下: Socket is an identifier for a particular service on a particular node on a network. The socket consis
Linux IPC:套接字(socket)学习小结(一)
Linux IPC:套接字(socket)学习小结(一)Unix系统提供的很多经典进程间通信机制(IPC)如Pipe、消息队列、共享内存等都是面向同一台计算机上运行的进程(相关进程)之间,所以套接字(socket)存在便是为了允许在不相关的进程(或是不同主机)间创建类似管道的连接。在《Unix/Linux编程实践教程》中将socket通信比喻为打电话查询时间服务的过程,我觉得甚为形象,所以这里也借用了这个类比。
C/C++ socket编程教程之四:使用socket()函数创建套接字
在Linux中,一切都是文件,除了文本文件、源文件、二进制文件等,一个硬件设备也可以被映射为一个虚拟的文件,称为设备文件。例如,stdin 称为标准输入文件,它对应的硬件设备一般是键盘,stdout 称为标准输出文件,它对应的硬件设备一般是显示器。对于所有的文件,都可以使用 read() 函数读取数据,使用 write() 函数写入数据。
c语言实现Socket套接字通信
c语言实现Socket套接字通信,简单易学
使用socket套接字实现TCP聊天系统demo
服务器代码 # coding:utf-8 import socket from threading import Thread,Lock import time class BBSServer: def __init__(self,port): self.port = port self.clients = [] self.lock...
Socket套接字编程(TCP编程异常处理)
在运行TCP并发服务器端代码时发现客户端退出时服务器端子进程产生了僵尸进程服务器端避免僵尸进程的方法通过忽略SIGCHLD信号,解决僵尸进程signal(SIGCHLD, SIG_IGN)。通过wait方法,解决僵尸进程signal(SIGCHLD, handle_sigchld);wait(NULL)。通过waitpid方法,解决僵尸进程signal(SIGCHLD, handle_sigchl...
套接字描述符的理解
一、首先明确 啥是“套接字”——所谓套接字就是对通信端点的抽象。 套接字描述符——就如程序通过文件描述符访问文件一样,套接字描述符是访问套接字的一种路径。 从某种意义上说,套接字也在文件,所以许多对文件描述符使用的函数,对套接字描述符同样适用,但是有些是不可使用的。 二、与套接字相关的两个函数:int socket(int domain,int type,int protocol) /*返回
socket套接字详解(TCP与UDP)
学习LInux,网络编程套接字是基础,也是新手学习的难点,通过本篇文章,读者可以通过图解、作者的代码实现思路全面理解IP地址、端口号、TCP、UDP概念、socket API用法、模拟客户端/服务器通信等。 Mark:阅读blog + 代码实现耗时18分钟 文章重点: IP地址、端口号…… socket API 实现UDP客户端/服务器 套接字是网络编程中的一种通...
socket编程及Unix域内套接字实现进程间通信
在项目中常常需要进程间通讯,但是往往本地socket复杂些,但是更灵活些,毕竟功能强大些1.socketint socket(int doamin,int type,int pro);功能:通过该函数可以创建一个socket套接字文件,并返回该文件的描述符。参数:domain PF_INET  表示是个互联网程序PF_UNIX 表示域内套接字,支持单机进程通信  注:这几个参数有AF_UNIX=A...
关闭套接字closesocket()
本文来自百度百科   此函数关闭套接字s,并释放分配给该套接字的资源,以后对s 的引用都将产生错误WSAENOTSOCK。如果s涉及一个打开的TCP连接,该连接被释放。 中文名 closesocket() 注    释 本函数关闭一个套接口 类    型 函数
创建套接字socket函数的详解(sock_stream和sock_dgram的分析)
首先放上创建套接字的代码,再具体讲述函数中每一个参数的具体含义:#include <sys/socket.h> int socket(int domain,int type,int protocol); ->成功时返回文件描述,失败时返回-1(linux)#include <winsock2.h> SOCKET socket(int af,int type,int p...
套接字缓存(socket buffer)
Linux网络核心数据结构是套接字缓存(socket buffer),简称skb。它代表一个要发送或处理的报文,并贯穿于整个协议栈。 1、    套接字缓存 skb由两部分组成: (1)    报文数据:它保存了实际在网络中传输的数据; (2)    管理数据:供内核处理报文的额外数据,这些数据构成了协议之间交换的控制信息。 当应用程序向一个socket传输数据之后,该socket将创建
CSocket create 套接字失败,原因没有初始化套接字。
BOOL CCHFCCM2ClientApp::InitInstance() { ....... //加入下面代码:  if (!AfxSocketInit())  {   AfxMessageBox("套接字初始化失败!");   return FALSE;  } ...... }
Linux下套接字详解(五)----基于fork多进程的TCP套接字(阻塞/同步/并发)
简介一个简单的改进方案是在服务器端使用多线程(或多进程)。多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他的连接。具体使用多进程还是多线程,并没有一个特定的模式。传统意义上,进程的开销要远远大于线程,所以如果需要同时为较多的客户机提供服务,则不推荐使用多进程;如果单个服务执行体需要消耗较多的CPU资源,譬如需要进行大规模或长时间的数据运算或文件访问
socket相关的面试题
1、TCP和UDP的区别:1)TCP提供面向连接的传输,通信前要先建立连接(三次握手机制);UDP提供无连接的传输,通信前不需要建立连接。2)TCP提供可靠的传输(有序,无差错,不丢失,不重复);UDP提供不可靠的传输。3)TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组;UDP是面向数据报的传输,没有分组开销。4)TCP提供拥塞控制和流量控制机制;UDP不提供拥塞控制和流量控制机
Linux C语言编程-Linux网络通信--Linux上使用套接字(socket)来处理信息---编写一个单进程非阻塞多客户的套接字客户端
*相关软件的版本: gcc版本:gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-52) Linux版本:红帽企业版 5.5 1.概述:在之前的“Linux上使用套接字(socket)来发送信息”的文章中我们讲了套接字的相关相关的属性和相关的函数,但是我们在之前的文章中写的服务端的实例写的都是阻塞模式的套接字,而且我们之前编写的套接字的实例只能使用于单个
Linux网络编程【一】:TCP socket套接字详解
1.socket socket这个词可以表示很多概念: 在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为 socket。 在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成 的socketpair就唯一标识一个连接。 socket本身 有“插座”的意思,因此用来描述网络连接的一 对一关系
linux socket编程 errno 1 创建套接字失败
权限问题 在root用户下启动程序。 mSocket = socket (AF_INET, SOCK_RAW, IPPROTO_ICMP);      if (m_hSocket == INVALID_SOCKET)      {          printf("create socket err:%d\n", errno);          return false;     }errno ...
套接字(socket)编程简单实现server-client聊天程序
1、socket      在TCP/IP协议中,一个IP地址标识网络通讯中唯一一台主机,而一个IP地址+一个TCP(或UDP)端口号就可以标识网络通讯中的一个进程,此时的IP地址+端口号即称为socket。       内存中的多字节数据相对于内存地址有大小端之分,磁盘文件中的多字节数据相对于文件中的偏移地址也有大小端之分,网络数据流同样也有大小端之分:先发出的数据是低地址,后发出的数据是搞地质
C++中 socket 套接字连接
建立socket连接 套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。 第一步:服务器监听:服务器端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态,等待客户端的连接请求。 第二步:客户端请求:指客户端的套接字提出连接请求,要连接的目标是服务器端的套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口
Linux下C语言套接字进行图片传输
Linux下使用C语言套接字进行图片的传输,先运行服务器端,再运行客户端
socket(套接字)详解一种通讯机制
socket给提供给使用进程TCP/UDP等网络协议进行网络通讯手段。 linux中网络编程通过socket接口实现; socket既是一种特殊的IO,提供对应的文件描述符。socket都有一个相关的描述{协议,本地地址,本地端口,远程地址,远程端口}(五元组信息);每一个socket有一个本地的唯一socket,由操作系统分配。 #include <sys/socket.h> ...
Windows下基于socket多线程并发通信的实现
本文介绍了在Windows 操作系统下基于TCP/IP 协议Socket 套接口的通信机制以及多线程编程知识与技巧,并给出多线程方式实现多用户与服务端(C/S)并发通信模型的详细算法,最后展现了用C++编写的多用户与服务器通信的应用实例并附有程序。 关键词:Windows;套接字;多线程;并发服务器; Socket 是建立在传输层协议(主要是TCP 和UDP)上的一种套接字规范,最初由美国加州Berkley 大学提出,为UNIX 系统开发的网络通信接口,它定义了两台计算机之间通信的规范,socket 屏蔽了底层通信软件和具体操作系统的差异,使得任何两台安装了TCP 协议软件和实现了Socket 规范的计算机之间的通信成为可能,Socket 接口是TCP/IP 网络最为通用的应用接口,也是在Internet 上进行网络程序应用开发最通用的API[1],本文介绍了Socket通信的基本机制以及采用多线程技术实现并发通信的基本原理,并给出实例。
套接字(socket)基本知识与工作原理
套接字(socket)基本知识与工作原理 一、Socket相关概念     Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)     SOCKET用于在两个基于TCP/IP协议的应用程序之间相互通信。最早出现在UNIX系统中,是UNIX系统主要的信息传递方式。在WINDOWS系统中,SOCKET称为WINSOCK。两个基
ServerSocket套接字实现服务器端和Socket套接字实现客户端
编写服务器端程序: 1.创建一个服务器套接字(ServerSocket),绑定到指定端口; 2.调用accep方法,侦听来自客户端的请求,如果客户发出的请求,则接受连接,返回通信套接字Socket; 3.调用Socket的getInputStream和getOutputStream方法,获得输入/输出流,开始网络数据的接收和发送; 4.关闭通信套接字,关闭服务器套接字;示例代码如下:pack
网络编程原始套接字SOCKET_RAW
SOCKET_STREAM 流式套接字      SOCKET_DGRAM        SOCKET_RAW 原始套接字    IPPROTO_IP IP协议    IPPROTO_ICMP INTERNET控制消息协议,配合原始套接字可以实现ping的功能    IPPROTO_IGMP INTERNET 网关服务协议,在多播中用到 在AF_INET地址族下
socket(网络套接字)传输图片
socket(网络套接字)传输图片
套接字(二):Socket 套接字编程(附实例)
TCP/IP地址家族统一的套接字地址结构定义如下: struct sockaddr_in { short sin_family; //指定地址家族,即地址格式 unsigned short sin_port; //端口号码 struct in_addr
linux下C语言的异步套接字用法
<br />记录一下select()函数的相关用法,以下资料由网上获得<br /> <br />Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如 <br />connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等 <br />待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。 <br />可是使用Select就可以
Socket编程实践(8) --套接字IO超时设置方法
引:超时设置3种方案 1. alarm超时设置方法 [cpp] view plaincopy //代码实现: 这种方式较少用   void sigHandlerForSigAlrm(int signo)   {       return ;   }      signal(SIGALRM, sigHandlerForSigAlr
根据SOCKET套接字获得此套接字绑定的端口号
//testSocket:已经绑定了端口的套接字,这里假设不知道其绑定了哪个端口,本函数是通过该套接字反推其绑定的端口 //函数返回该套接字的端口号 int getPort(SOCKET testSocket) { sockaddr_in sockAddr; int nlen = (int)sizeof(sockAddr); getsockname(testSocket, (socka
链路层套接字
最近看了下udhcp的源代码,其中会根据LISTEN_MODE建立不同的socket进行通信,一个是普通的传输层UDP套接字,另外一个是链路层的套接字,由于本人才疏学浅,所以在网上搜罗了一下有关链路层套接字的东东,在此记录一下。   链路层套接字也叫原始套接字(raw packet),可以接收网卡上的数据帧,换句话说是直接从网卡上拿数据,可以今夕流量统计和分析,socket的建立有一下几种:
java socket 套接字通信
对于这种服务端或客户端接收中文乱码的情况通常是因为数据发送时使用的编码跟接收时候使用的编码不一致。比如有下面这样一段服务端代码: Java代码   public class Server {        public static void main(String args[]) throws IOException {        //为了简单起见,所有的异常信息都往外抛
Socket套接字编程(I/O复用 select)
select函数/* According to POSIX.1-2001 */ #include &amp;lt;sys/select.h&amp;gt; /* According to earlier standards */ #include &amp;lt;sys/time.h&amp;gt; #include &amp;lt;sys/types.h&amp;gt; #include &amp;lt;unistd.h&amp;gt; int select...
C#套接字Socket编程之最简单通信
从网上看到的,自己手打学习过程 最简单的套接字编程、实现服务器从客户端接受一条消息并返回一条消息。 基本过程: 1.根据服务器IP和端口号建立EndPoint对象 2.建立Socket对象 3.利用Socket对象的Bind方法绑定EndPoint对象 4.利用Socket的Listen方法监听 5.与客户端建立连接并用Socket的Accept创建新的Socket对象并用新对象
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 关于大数据培训 关于云计算