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相关