未陌
2016-02-01 21:44
/* *UDP服务端 */
package com.imooc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPserver {
UDPserver() throws IOException{
DatagramSocket ds = new DatagramSocket(5555);
byte[] b = new byte[2048];
DatagramPacket dp = new DatagramPacket(b,0,b.length);
ds.receive(dp);
String s = new String(b);
System.out.println("我是服务器,客户端说: "+s);
InetAddress address = InetAddress.getByName("localhost");
int port = dp.getPort();
byte[] b1 = new byte[2048];
b1= "客户端你好,你的信息已经收到,我是服务器".getBytes();
DatagramPacket dp2 = new DatagramPacket(b1,0,b1.length,address,port);
ds.send(dp2);
ds.close();
}
public static void main(String[] args) throws IOException {
UDPserver us = new UDPserver();
}
}
/*
*UDP客户端
*/
package com.imooc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPclient {
public static void main(String[] args) throws IOException{
DatagramSocket ds = new DatagramSocket();
InetAddress address = InetAddress.getByName("localhost");
int port = 5555;
byte[] b = new byte[2048];
b ="用户名:1;密码:2".getBytes();
DatagramPacket dp = new DatagramPacket(b,b.length,address,port);
ds.send(dp);
DatagramPacket dp1 = new DatagramPacket(b,b.length);
ds.receive(dp1);
String s1 = new String(b);
System.out.println("我是客户端,服务器说: "+s1);
ds.close();
}
}
客户端打印:
客户端你好,你?
你前面那个服务器端的代码都没有放到main方法里去。
UDPserver us = new UDPserver();
你用的这种方式根本就不能够调用上面的那些方法,因为这个是创建实例对象......而你想要的是运用那些方法。
接受客户端信息时:String s1 = new String(b);应该修改为String s1 = new String(b,0,dp1.getLength());
byte[] b = new byte[2048];
b ="用户名:1;密码:2".getBytes();
byte[] b1 = new byte[2048];
b1= "客户端你好,你的信息已经收到,我是服务器".getBytes();
你分别给b和b1都赋值了,所以他们的长度都改变了,当你用b来接受b1时,由于b的长度比b1短,所以接收不完。
System.out.println("我是服务器,客户端说: "+s);
InetAddress address = InetAddress.getByName("localhost");
int port = dp.getPort();
address 弄粗了,应该发往的地址是 InetAddress address = packet.getAddress();
Java Socket应用---通信是这样练成的
125013 学习 · 590 问题
相似问题