import java.net.*;
import java.io.*;public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readUTF());
}
}
}
-------------------------------------
import java.net.*;
import java.io.*;public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
//long n = 10000L;
String s ="hello";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeChars(s);
byte[] buf = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
}
----------------------------------
输出结果: ello
怎样才能输出hello呢?
import java.io.*;public class TestUDPServer
{
public static void main(String args[]) throws Exception
{
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
DatagramSocket ds = new DatagramSocket(5678);
while(true)
{
ds.receive(dp);
ByteArrayInputStream bais = new ByteArrayInputStream(buf);
DataInputStream dis = new DataInputStream(bais);
System.out.println(dis.readUTF());
}
}
}
-------------------------------------
import java.net.*;
import java.io.*;public class TestUDPClient
{
public static void main(String args[]) throws Exception
{
//long n = 10000L;
String s ="hello";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeChars(s);
byte[] buf = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
}
----------------------------------
输出结果: ello
怎样才能输出hello呢?
解决方案 »
- 急!!!在启用了ssl认证后,如何保存cookie???????????????????????????????????????
- 初学者急求高手完善一个Java写的聊天程序
- 如何利用tab制表符来判断文本内容并输出
- java调用Linux下的shell返回值不同的问题
- 请问一个Swing界面的问题
- 不知道为什么没分散了,顺便提问个,类型转换问题
- 请问用j2se能否开发游戏?
- 7÷2=4的那个方法是什么?
- [java 中文问题] 如何让swing的jtextfield 同其他组件正确显示用户输入的中文
- xml获取标签里面的内容(也包含标签)
- 见鬼了,客户端JavaMail-1.4偶尔出现 DEBUG SMTP: QUIT failed with 250
- 关于非静态变量的对象实例化
import java.io.DataOutputStream;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;public class TestUDPClient {
public static void main(String args[]) throws Exception
{
//long n = 10000L;
String s ="hello";
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream dos = new DataOutputStream(baos);
dos.writeUTF(s);
byte[] buf = baos.toByteArray();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
new InetSocketAddress("127.0.0.1", 5678)
);
DatagramSocket ds = new DatagramSocket(9999);
ds.send(dp);
ds.close();
}
}
public final void writeUTF(String str)
throws IOException以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。
首先,通过 writeShort 之类的方法将两个字节写入输出流,表示后跟的字节数。该值是实际写出的字节数,不是字符串的长度。根据此长度,使用字符的 UTF-8 修改版编码按顺序输出字符串的每个字符。如果没有抛出异常,则计数器 written 增加写入输出流的字节总数。该值至少是 2 加 str 的长度,最多是 2 加 str 的三倍长度。
writeChars
public final void writeChars(String s)
throws IOException将字符串按字符顺序写入基础输出流。通过 writeChar 方法将每个字符写入数据输出流。如果没有抛出异常,则计数器 written 增加 s 长度的两倍。
因为你在服务端的接受用的是readUTF,所以客户端发送请求时应该用对应的方法