导航:首页 > 编程知识 > socket编程怎么接收长度

socket编程怎么接收长度

发布时间:2023-02-01 03:04:57

㈠ socket编程中如何接收变长字符串

TCP是流式的传输,也就是说,TCP自身并不知道你的协议需要传递多大的数据,什么时候结束,如何告诉接收你数据的对端数据已经接收完毕了,需要自己定义协议的格式.主流的方式有以下两种:
第一种是http协议这样的,以"\r\n\r\n"来表示接收完毕,也就是说有一个"标志位".
第二种是在协议中加入表示数据包长度的字段,首先读取包头,解析包头得到接下来数据的长度,然后再进行下一步的读取.

㈡ tcp socket怎么接受一个数据包。 或者说对方先发了一个数据的大小,怎样先把大小收到,然后再收数据

对你来说就是一个字符数组,你直接取这个数组的大小就行了。

㈢ 关于C#,100分+相送。c#中socket编程中,怎么获取接受到得数据长度

服务器端向客户端传送文件之前,可以先向客户端传送一个数据大小的值。否则只能累计分包值得到文件数据最终长度

receive方法中的几个重载都是什么啊
------------------------------------
完全可以自己看MSDN
Socket.Receive (Byte[]) 从绑定的 Socket 套接字接收数据,将数据存入接收缓冲区。
由 .NET Compact Framework 支持。

Socket.Receive (泛型 IList) 从绑定的 Socket 接收数据,将数据存入接收缓冲区列表中。
Socket.Receive (Byte[], SocketFlags) 使用指定的 SocketFlags,从绑定的 Socket 接收数据,将数据存入接收缓冲区。
由 .NET Compact Framework 支持。

Socket.Receive (泛型 IList, SocketFlags) 使用指定的 SocketFlags,从绑定的 Socket 接收数据,将数据存入接收缓冲区列表中。
Socket.Receive (Byte[], Int32, SocketFlags) 使用指定的 SocketFlags,从绑定的 Socket 接收指定字节数的数据,并将数据存入接收缓冲区。
由 .NET Compact Framework 支持。

Socket.Receive (泛型 IList, SocketFlags, SocketError) 使用指定的 SocketFlags,从绑定的 Socket 接收数据,将数据存入接收缓冲区列表中。
Socket.Receive (Byte[], Int32, Int32, SocketFlags) 使用指定的 SocketFlags,从绑定的 Socket 接收指定的字节数,存入接收缓冲区的指定偏移量位置。
由 .NET Compact Framework 支持。

Socket.Receive (Byte[], Int32, Int32, SocketFlags, SocketError) 使用指定的 SocketFlags,从绑定的 Socket 接收数据,将数据存入接收缓冲区。

㈣ c#的socket编程中,怎么获取接受到得数据长度

//测试URL程序 客户端和服务器端在后面
public class TestURL {
public static void main(String[] args) throws IOException {
//构建一URL对象
URL url=new URL("file:///C:/test.out");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
//使用openStream得到一输入流并由此构造一个BufferedReader对象
String inputLine;
while ((inputLine = in.readLine()) != null)
//从输入流不断的读数据,直到读完为止
System.out.println(inputLine); //把读入的数据打印到屏幕
in.close(); //关闭输入流
}
}

客户端程序
public class ClientDemo {
public static void main(String[] args) throws UnknownHostException, IOException {
//向本机的4700端口发出请求
Socket socket=new Socket("localhost",4700);
//由系统标准输入创建一个输入流,负责接收界面输入的数据
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//由Socket对象得到一个输出流
//负责向服务器端发送数据
PrintWriter pw=new PrintWriter(socket.getOutputStream());
//由Socket得到一个对象的输入流
//负责接收服务器端返回的信息
BufferedReader brsocket=new BufferedReader(new InputStreamReader(socket.getInputStream()));
String readLine;
//从标准输入设备上接收传入的一个字符串
System.out.println("请您输入向服务器的数据");
readLine=br.readLine();
//如果页面传入bye,则结束循环
while(!readLine.equals("bye")){
/*向服务器发送接收到的字符串*/
pw.println(readLine);
pw.flush();
//在标准输出设备上输出刚才发送给服务器的数据
System.out.println("Client:"+readLine);
//输出从服务器端得到的数据
System.out.println("正在等待接收服务器端信息:");
System.out.println("Server:"+brsocket.readLine());
//从标准输入设备上接收传入的一个字符串
System.out.println("请您输入向服务器的数据");
readLine=br.readLine();
}
brsocket.close();
pw.close();
br.close();
socket.close();
}
}
服务端程序
public class ServerDemo {
public static void main(String[] args) throws IOException {
/*创建服务器监听的接口*/
ServerSocket server=new ServerSocket(4700);
//使用accept()阻塞等待客户请求,有客户
//请求到来则产生一个Socket对象,并继续执行
Socket socket=server.accept();
String line;
//由Socket对象得到一个输入流,负责从客户端接收数据
BufferedReader brin=new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由Socket对象得到一个输出流,负责向客户端发送数据
PrintWriter pw=new PrintWriter(socket.getOutputStream());
//创建一个标准输入设备的输入流
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
//在标准输出设备上输出从客户端得到的数据
System.out.println("正在等待客户端的数据......");
System.out.println("Client:"+brin.readLine());
System.out.println("请您输入要向客户端发送的信息:");
//从标准输入设备上得到字符串
line=in.readLine();
////如果该字符串为 "bye",则停止循环
while(!line.equals("bye")){
//向客户端输出信息
pw.println(line);
pw.flush();
//在标准输出设备上输出刚才Server读入的字符串
System.out.println("Server:"+line);
//输出刚才从客户端读入的数据
System.out.println("正在等待客户端的数据......");
System.out.println("Client"+brin.readLine());
System.out.println("请您输入要向客户端发送的信息:");
line=in.readLine();
}
brin.close();
in.close();
pw.close();
server.close();
socket.close();
}
}

㈤ c++socket编程中怎样接收不定长大小的消息

你可以先发送长度(比如一个int),再发送数据;
接收方先接收长度(int),然后根据长度接收数据

阅读全文

与socket编程怎么接收长度相关的资料

热点内容
龙江网络配置什么路由器 浏览:169
如何使用指标导入数据 浏览:866
平时用什么app看nba 浏览:503
win10想以管理员身份运行bat文件 浏览:85
合并单元格中的其他数据如何排序 浏览:331
电脑窗口程序在哪 浏览:281
前女友把我微信删了又加什么意思 浏览:655
win10不识别无线xboxone手柄 浏览:403
汽车之家app怎么看成交价 浏览:908
abc文件破解密码 浏览:516
怎么登录米家app账号 浏览:165
兆欧表多少转读数据 浏览:414
多媒体网络通讯 浏览:747
文件上的表填不了内容该怎么办 浏览:899
弟弟迷上网络小说怎么办 浏览:766
网络上有人想访问我的地址怎么办 浏览:730
linux解压zip乱码 浏览:839
看直播数据用哪个平台最好 浏览:730
win10芯片驱动程序版本 浏览:763
如何给word添加公式编辑器 浏览:666

友情链接