当前位置:编程学习 > JAVA >>

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

错误蛮多,输出为

求指教
//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);


}

}

}
控制台 聊天 udp --------------------编程问答-------------------- 说白了,就是一个乱码而已不是么?
String modifiedsentence=new String(recievepacket.getData());
这一句,改成
String modifiedsentence=new String(recievepacket.getData(),"utf-8");
或者
String modifiedsentence=new String(recievepacket.getData(),"GBK");
然后再试试。 --------------------编程问答-------------------- 不行的,除了按字节捕获时,会把数组空的地方输出为乱码,还有缓冲区也有一点问题。
但是out.flush();也不管用
补充:Java ,  Java相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,