java 网络编程求助 getData().length 和 直接getLength()效果不一样

写了两个类,一个是发送端,一个是接收端。
接收端写了两个字符串,为什么用dp.getData().length这个就打不出来后面的部分呢?
查了一下 .length这个是1024,创建新String时候如果空格太多就自动中止吗?另外getLength()为什么能直接是12呢?

输出:
hello world! from 192.168.31.204 port 9999
hello world!

程序:
package com.network;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class ServerTest {

public static void main(String[] args) throws Exception {
    byte[] buf = new byte[1024];
    DatagramSocket ds = new DatagramSocket(8891);
    DatagramPacket dp = new DatagramPacket(buf,1024);
    ds.receive(dp);
    String str1 = new String(dp.getData(),0,dp.getLength())+" from "+dp.getAddress().getHostAddress()+" port "+dp.getPort();
    System.out.println(str1);//正常
    String str2 = new String(dp.getData(),0,dp.getData().length)+" from "+dp.getAddress().getHostAddress()+" port "+dp.getPort();
    System.out.println(str2);  //这里返回的就不带from和后面那一截了,为什么呢?
    ds.close();
}

}

package com.network;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class ClientTest {

public static void main(String[] args) throws Exception {
    String str = "hello world!";
    byte[] buf = new byte[1024];
    DatagramSocket ds = new DatagramSocket(9999);
    DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getLocalHost(), 8891);
    ds.send(dp);
    ds.close();

}

}

0
扫码支付0.1元 ×
其他相关推荐
java 网络编程求助 getData().length 和 直接getLength()效果不一样
写了两个类,一个是发送端,一个是接收端。rn接收端写了两个字符串,为什么用dp.getData().length这个就打不出来后面的部分呢?rn查了一下 .length这个是1024,创建新String时候如果空格太多就自动中止吗?另外getLength()为什么能直接是12呢?rnrnrn输出:rnhello world! from 192.168.31.204 port 9999rnhello world!rnrn程序:rnpackage com.network;rnrnimport java.net.DatagramPacket;rnimport java.net.DatagramSocket;rnrnpublic class ServerTest rnrn public static void main(String[] args) throws Exception rn byte[] buf = new byte[1024];rn DatagramSocket ds = new DatagramSocket(8891);rn DatagramPacket dp = new DatagramPacket(buf,1024);rn ds.receive(dp);rn String str1 = new String(dp.getData(),0,dp.getLength())+" from "+dp.getAddress().getHostAddress()+" port "+dp.getPort();rn System.out.println(str1);//正常rn String str2 = new String(dp.getData(),0,dp.getData().length)+" from "+dp.getAddress().getHostAddress()+" port "+dp.getPort();rn System.out.println(str2); //这里返回的就不带from和后面那一截了,为什么呢?rn ds.close();rn rnrnrnrnpackage com.network;rnrnimport java.net.DatagramPacket;rnimport java.net.DatagramSocket;rnimport java.net.InetAddress;rnrnpublic class ClientTest rnrn public static void main(String[] args) throws Exception rn String str = "hello world!";rn byte[] buf = new byte[1024];rn DatagramSocket ds = new DatagramSocket(9999);rn DatagramPacket dp = new DatagramPacket(str.getBytes(), str.getBytes().length, InetAddress.getLocalHost(), 8891);rn ds.send(dp);rn ds.close();rnrn rnrnrn
【语言-C++】关于CString 函数GetLength()返回值等于0
代码解读 CString 函数GetLength() int GetLength() const throw() { return( GetData()->nDataLength ); } CString的字符串长度是存在一个nDataLength(int型)的变量中,而nDataLength(int型)不是实时更新的,我们再看下面一个函数ReleaseBuffer
对Text类型的数据,使用getLength()与getBytes().length获取的长度不同解析
我们先来看一个小Demo: Text t = new Text("hadoop"); t.set("pig"); System.out.println(t.getLength()); System.out.println(t.getBytes().length); 不出意外,输出的结果都是3。但是这个时候如果我们把set方法中的参数改为如下类型将会发生什么事呢? t.set(new...
MySQL的length类函数
mysql varchar length() char_length()
filelength获取文件长度
filelength函数用于获取文件的长度,但是最大只能获取2g的文件大小,因为返回值类型long使用4个字节大小来表示,最大为2的31次方也就是2G的大小。   #include "stdafx.h" #include #include #include using namespace std; int _tmain(int argc, _TCHAR* argv[])
CString对象的一种错误的使用方式
我现在做的系统有的时候会出现这样的断言失败: Debug Error! DAMAGE: after Normal block (#328Array) at 0x182C30F0. 跟踪一下,发现问题竟出在CString的析构函数中,于是拿出了大半天的时间来研究这个问题,终于发现了原因所在。 问题的起因是我像下面这样调用无参的构造函数声明一个CString对象: CString strT
java -length的三种用法
java中length主要有三种用法,本博客只介绍前两种:1 Java中的length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了length这个属性.2 java中的length()方法是针对字符串String说的,如果想看这个字符串的长度则用到length()这个方法. 例程:1、所对应的用法: String[] list={"a","b","c"}
CString.GetLength返回值为0解决办法
今天调试程序,CS太ring对象中明明有值CString.GetLength返回值为0,代码如下 CString m_sername; CString s="hello "  m_sername=s; 此时s.GetLength()=0; 经网上查找,找到原因在str1.ReleaseBuffer();  其实CString::ReleaseBuffer只是一个形象的
CString 中明明有值,但GetLength为何返回0, IsEmpty 为何是TRUE?
好久没有写。。TMD碰到大坑,实在忍不住吐槽前任。 碰到了白痴写的代码如下: CString strGet,strKey; strGet.Empty(); strKey = _T("Mode"); GetPrivateProfileString(_T("COMM"),strKey,_T("default"),strGet.GetBuffer(512),512,...
请问关于getlength()和length
两者都是获得数组的长度,谁能说说在用法上有什么区别?
关于CFile读取文件的问题GetLength(),,,万恶的CFile不如|CStdioFile
CFile f;CString text; filename="C:/sell.txt"; f.Open(filename,CFile::modeReadWrite); f.Read(text.GetBuffer(),f.GetLength()); f.Close();如果要读取整个文件,注意在text.GetBuffer(),GetBuffer里不要自己设置长度参数f.GetLength());否则会读入多余的字符。
C++中string类的length()与size()方法和C语言的strlen()函数有什么区别?
直接上代码段: char buf[256]={0}; buf[0]='a'; buf[2]='v'; buf[3]='h'; string strTest(buf,6); cout<<"strTest[0]:"<<(uint32_t)strTest[0]<<"_"<<(uint32_t)strTest[1]<<"_
为什么使用length获取Java数组的长度
记得vamcily 曾问我:“为什么获取数组的长度用.length(成员变量的形式),而获取String的长度用.length()(成员方法的形式)?”   我当时一听,觉得问得很有道理。做同样一件事情,为什么采用两种风格迥异的风格呢?况且,Java中的数组其实是完备(full-fledged)的对象,直接暴露成员变量,可能不是一种很OO的风格。那么,设计Java的那帮天才为什么这么做
Java源码分析——java.lang.reflect反射包解析(二) Array类,数组的创建
在Java中,引用类型中有那么几个特殊的类,Object类是所有类的起源、Class类定义所有类的抽象与行为、ClassLoader类实现了类从.class文件中加载进jvm,而Array数组类,则实现了数组手动的创建
JAVA中String.length()中文只算一个字节
最近遇到一个问题,在
java中,length属性,length()方法,size()方法的区别
在java语言中,数组提供了length属性来获取数组的长丢;length()方法是针对字符串而言的,String提供length()方法来计算字符串的长度;size方法是针对泛型集合而言的,用于查看泛型中有多少元素。 // 一维数组 int[] arr = {1, 2}; System.out.println(arr.length); // 2 // 二维数据
Java网络编程--图片上传案例
这里详细展示了使用TCP协议进行本地图片上传的案例。案例要求:从本地通过客户端向服务器上传一个图片,要求对图片进行判断,是否为“.jpg”格式,大小不能超过2M,服务器将图片保存,并向客户端发送反馈信息。这个案例很多书籍或者网络资源都有所涉及,但是都不算全面。在这里我做了一点小小的改进,一是在客户端中,采用PrintStream打印流将获取到的本地数据发送给服务器端;二是在服务器端中,使用了一个小...
今天遇到一个字符串 length出来的长度不对的问题
代码是这样的 public static void main(String[] args) { HashMap cityMap = new HashMap(); cityMap.put("北京", "101010100"); String codeid = cityMap.get("北京"); System.out.println(codeid.length());
Java中网络编程小结
网络编程(理解)(1)网络编程:用Java语言实现计算间数据的信息传递和资源共享(2)网络编程模型(3)网络编程的三要素 A:IP地址 a:点分十进制 b:IP地址的组成 c:IP地址的分类 d:dos命令 e:InetAddress B:端口 是应用程序的标识。范围:0-65535,其中0
String length()函数,字母,汉字的长度都是1
String length()函数Returns the length of this string. The length is equal to the number of 16-bit Unicode characters in the string. "aaa".length() = 3;"你好呀".length() = 3;"aaa你好呀".length() = 6;JAVA采用Un
解决通过CHttpFile获取远程图片,图片长度取得不准确的问题
采用CHttpFile和CInternetSession类去获取图片,如下图中红色方框中所示的方式,并不能每次都能获取到正确的远程图片长度,我的测试工控机,就始终不能获取到图片,原因可能是CHttpFile类是直接去获取图片,通过网络获取图片需要时间,因此会造成GetLength()函数不能获取到正确的数据,使用一个循环去等待也没有解决该问题,也许是计算不准确。
JAVA中length属性length()方法和size()方法的区别
1.length属性是针对数组而言的    // 一维数组     int[] array = new int[7];     System.out.println(array.length);      // 二维数据     int[][] array = new int[2][7];     System.out.println(array.length);     System.out....
Java中for循环每次都通过list.size、str.length、length()获取数组或者字符串的长度是否消耗资源
最近看到有同事在使用for循环的时候首先会将数组或者字符串的长度赋值给一个变量;在网上查了一下说是这样可以节约资源的消耗,真实的情况又是如何?让我们看下他们的源码来分析。 1.将数组的长度赋值给变量len List<Integer> list = new ArrayList<Integer>();
在构造函数中的setData和getData
构造函数中的设置方法和获取方法 // 在构造函数中 function Person(name,age){ this.name = name; this.age = age; //getters 获取一个值 this.getData = function(){ return this.n
Java中字符串长度方法length()和codePointCount()区别
在String类和继承抽象类AbstractStringBuilder的StringBuilder和StringBuffer类中,length()和codePointCount()方法都是计算字符串长度。测试运行的长度值是相等的,那为什么要设定两个方法呢?经过研究发现:对于普通字符串,这两种方法得到的值是一样的,但对于UniCode编码来说,还是有一点区别。常用的uniCode字符使用一个代码单元就
eclipse中run与debug结果不一样
在写一个kafka avro时测试producer发送消息使用异步send的方式(https://blog.csdn.net/QYHuiiQ/article/details/88723584),在run的时候没有把消息发送出去,所以就开始debug看是什么执行过程,结果发现debug可以发送消息。这就让我产生疑问,为什么debug和run 的结果会不一样,看了网上的很多说法都是无比坚定的说结果不...
一个多线程练习,为什么直接运行和debug结果不一样
异常状态:hadoop一个测试类代码,直接运行不报错,但是我想调试,打断点,一步一步的走,结果报错 在调试状态和正常运行情况下表现结果不同,一般是因为时间差导致的。简单的说,就是你代码中涉及到异步、多线程的地方,可能存在等待的关系,因为调试的断点和速度等关系导致运行的逻辑和你预想的不太一样,导致出现问题。...
Java之GUI和网络编程
一、GUI        1、计算机与用户交互的方式有两种,一种是命令行,一种是图形化界面,而GUI是图形用户的接口,用图形的方式来显示计算机操作的界面,这样更方便直接,我们把图像化界面的对象都封装在了Java.Awt 和Javax.Swing包中。Awt是抽象接口工具包,它需要调用本地系统方法实现功能,与系统依赖性强,跨平台性较弱,属于重量级控制。Swing是在Awt的基础上建立的一套图形
直接用编译器按ctrl+F5运行和Release、Debug下双击运行结果不一样
是因为进程权限的问题,需要添加下面的代码:BOOL EnableDebugPrivilege() { HANDLE hToken; BOOL fOk=FALSE; if(OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken)) { TOKEN_PRIVILEGES tp; tp.PrivilegeCount=1; i
JAVA基础 - 数组中有没有length()这个方法?String中有没有 length()这个方法?
数组中有没有length()这个方法?String中有没有 length()这个方法?       数组中没有length()这个方法,但是数组中有length这个属性。用来表示数组的长度。       String中有length()这个方法。用来得到字符串的长度。
CString::GetLength()获得字节数的正确方法
前段时间,做http协议上传文件及断点续传控件时,在客户端采用C++调用CHttpConnection、CHttpFile进行文件上传。移植到Unicode编码时,上传得到的文件总是小于正常文件。最终发现问题出在CString::GetLength()方法上。当采用Unicode编码时,而且http header字符串中出现了中文或其其他多字节字符,该方法仍旧只返回字符数,而不是实际的字节数,这样
java中length和length()的区别
java中length和length()的区别
java eclipse 反编译插件安装
下载jadClipse地址: 链接: http://pan.baidu.com/s/1kTN4TPd  提取码: 3fvd 将net.sf.jadclipse_3.3.0.jar拷贝到eclipse的plugins目录下; 删除eclipse的configuration目录下org.eclipse.update (记录Eclipse feature ID 、相对路径、版本号信息 )文
CString::GetLength()获得字节数的正确方法介绍
CString::GetLength()获得字节数的正确方法介绍 2012-11-09 19:51 来源:博客园 作者:zhwl 字号:T|T [摘要]本文介绍CString::GetLength()获得字节数的正确方法,并提供简单的示例代码供参考。 前段时间,做http协议上传文件及断点续传控件时,在客户端采用C++调用CHttpConnection、CHttpFile
JAVA网络编程(3):Java编写在TCP网络连接上传递对象
要点: *(1)ObjectInputStream和ObjectOutputStream可以从底层输入流中读取 对象类型的数据和将对象类型的数据写入到底层输出流。 *(2)使用ObjectInputStream和ObjectOutputStream来包装底层网络字节,TCP服务器和TCP客户端之间就可以传递对象类型的数据。 代码实现 import java.io.*; import java.n
图形数字化工具 - getData
getData基本使用手册 1.下载getData软件,并解压安装 2.将需要处理的图片格式转为(.JPG | .BMP | .TIF | .PCX)其中一种,具体方法为:    用PC自带的画图软件打开图片文件,点击"文件" - "另存为" - "XXX.bmp|XXX.jpg|XXX.tif|XXX.pcx" 3.进入软件操作界面,"文件" - "打开图片"    提示:点击"设置&q
Java语法糖之可变长度参数
可变长度参数原理 public class CaseTest { public void print(int... arr) { System.out.println(arr[0]); } } 反编译class文件: 1.jpg 说明: 这个可变长度参数的设计就是java的语法糖,方便程序人员的使用规则,但是...
PathMeasure之迷径追踪
PathMeasure之迷径追踪Path,不论是在自定义View还是动画,都占有举足轻重的地位。绘制Path,可以通过Android提供的API,或者是贝塞尔曲线、数学函数、图形组合等等方式,而要获取Path上每一个构成点的坐标,一般需要知道Path的函数方法,例如求解贝塞尔曲线上的点的De Casteljau算法,但对于一般的Path来说,是很难通过简单的函数方法来进行计算的,那么,如何来定位任意
java 判断返回类型是非为空(null 与 a.length()的区别)
null  与 a.length()的区别 如果a为null 则a.length就会报 java lang nullpointException 正确的处理方法: if(a==null){ } 而不是a.length>0
两个字符串看起来是一样的,但是字符串的长度显示不同 -- java
一. 问题 今天发现,程序中,比较两个字符串是否相等的部分, 出现了, 两个字符串看起来相同, 但是比较结果确实不同的情况。 二. 具体情况 1. 字符串的内容是通过读取文件来得到的。 2. 比较的两个字符串来自两个不同文件。 3. 后来发现, 一个文件的编码是utf8+bom,一个是utf8。 三. 解决方案 将utf8+bom的编码格式改为utf8。问题解决。 只要将两个文件的...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java 学习 网络编程 学习java网络编程的