UDP聊天小程序,控制台输出,错误蛮多

JYM2011 2013-10-19 01:13:01
错误蛮多,输出为

求指教
//GeJing 18/10/2013
package test1;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPclient {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader infromuser=new BufferedReader(new InputStreamReader(System.in));
DatagramSocket clientsocket=new DatagramSocket();
InetAddress IPAddress=InetAddress.getByName("localhost");

byte[] senddata=new byte[10];
byte[] recievedata=new byte[10];
while(true){
System.out.println("input: ");
String sentence=infromuser.readLine();//yichang chuli
senddata=sentence.getBytes();
DatagramPacket sendpacket=new DatagramPacket(senddata, senddata.length,IPAddress,18888);
clientsocket.send(sendpacket);
DatagramPacket recievepacket=new DatagramPacket(recievedata,recievedata.length);
clientsocket.receive(recievepacket);
String modifiedsentence=new String(recievepacket.getData());

System.out.println("From server: "+modifiedsentence);

//clientsocket.close();
}
}
}
////////////////////////////////////////////////////////////

//GeJing 18/10/2013
package test1;

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

public class UDPserver {

/**
* @param args
*/
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
DatagramSocket serversocket=new DatagramSocket(18888);

byte[] receivedata=new byte[10];
byte[] senddata=new byte[10];

while(true){
DatagramPacket receivepacket=new DatagramPacket(receivedata, receivedata.length);
serversocket.receive(receivepacket);

@SuppressWarnings("deprecation")
String sentence =new String(receivepacket.getData());


InetAddress IP=receivepacket.getAddress();
int port=receivepacket.getPort();
String modifiedsentence=sentence.toUpperCase();
System.out.println("From client: "+sentence);
senddata=modifiedsentence.getBytes();

DatagramPacket sendpocket=new DatagramPacket(senddata, senddata.length,IP,port);
serversocket.send(sendpocket);


}

}

}
...全文
114 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JYM2011 2013-10-19
  • 打赏
  • 举报
回复
不行的,除了按字节捕获时,会把数组空的地方输出为乱码,还有缓冲区也有一点问题。 但是out.flush();也不管用
失落夏天 2013-10-19
  • 打赏
  • 举报
回复
说白了,就是一个乱码而已不是么? String modifiedsentence=new String(recievepacket.getData()); 这一句,改成 String modifiedsentence=new String(recievepacket.getData(),"utf-8"); 或者 String modifiedsentence=new String(recievepacket.getData(),"GBK"); 然后再试试。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧