`
hsyzijvaa
  • 浏览: 107360 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

java UDP 通信

    博客分类:
  • java
阅读更多
    那位高手可以帮小弟改一下以下程序,只实现传送简单的数据包,谢谢!

import java.net.*;
import java.io.*;
import java.awt.*;


class udpcommunicationserver extends frame {
private label label1, label2;
private panel panel1, panel2;
private textfield textfield;
private string name, name1;
private textarea textarea;
private datagramsocket sendsocket, receivesocket;
private datagrampacket sendpacket, receivepacket;

public udpcommunicationserver() {
super("通信控制台:");
panel1 = new panel();
panel1.setlayout(new borderlayout());
label1 = new label("通话记录");
textarea = new textarea(10, 20);
textarea.settext("欢迎你!");
panel1.add("north", label1);
panel1.add("center", textarea);
add("north", panel1);
panel2 = new panel();
panel2.setlayout(new borderlayout());
label2 = new label("发言:");
panel2.add("center", label2);
textfield = new textfield(20);
panel2.add("south", textfield);
add("center", panel2);
setvisible(true);
try {
sendsocket = new datagramsocket();
receivesocket = new datagramsocket(5000);
} catch (socketexception e) {
e.printstacktrace();
system.exit(1);
}
}

public void waitforpacket() {
while (true) {
try {
byte[] buf = new byte[100];
receivepacket = new datagrampacket(buf, buf.length);
receivesocket.receive(receivepacket);
name = receivepacket.getaddress().tostring();
if (name1 != name) {
textarea.append("\n来自主机:" + name + "\n端口:"
+ receivepacket.getport());
}
textarea.append("\n客户:");
byte[] data = receivepacket.getdata();
string receivedstring = new string(data);
textarea.append(receivedstring);
name1 = name;
} catch (ioexception e) {
textarea.append("\n网络通信出现错误,问题在" + e.tostring());
}
}
}

public void processevent(awtevent e) {
if (e.getid() == event.window_destroy) {
setvisible(false);
dispose();
system.exit(0);
}
super.processevent(e);
}

public boolean action(event e, object o) {
try {
textarea.append("\n服务器:");
string string = o.tostring();
textarea.append(string);
byte[] databyte = new byte[100];
databyte = string.getbytes();
sendpacket = new datagrampacket(databyte, string.length(),
inetaddress.getbyname(name), 5001);
sendsocket.send(sendpacket);
} catch (ioexception ioe) {
textarea.append("网络通信出现错误,问题在" + ioe.tostring());
}
return true;
}
}

public class udpserver {
public static void main(string[] args) {
udpcommunicationserver cs = new udpcommunicationserver();
// cs.setvisible(true);
cs.waitforpacket();

}
}


import java.net.*;
import java.io.*;
import java.awt.*;
import java.applet.*;
public final class client extends applet{
private label label1,label2;
private panel panel1,panel2;
private textfield textfield;
private textarea textarea;
private datagramsocket sendsocket,receivesocket;
private datagrampacket sendpacket,receivepacket;
public void init(){
setbackground(color.gray);
setlayout(new borderlayout());
panel1=new panel();
panel1.setlayout(new borderlayout());
label1=new label("通话记录");
textarea=new textarea(10,20);
textarea.settext("欢迎你!");
panel1.add("north",label1);
panel1.add("center",textarea);
add("north",panel1);
label2=new label("发言:");
panel2=new panel();
panel2.add("center",label2);
textfield=new textfield(20);
textfield.settext("");
panel2.add("south",textfield);
add("center",panel2);
setvisible(true);
}
public void start(){
waitforpackets();
}
public void waitforpackets(){
try{
sendsocket=new datagramsocket();
receivesocket=new datagramsocket(5001);
}catch(socketexception e){
textarea.append("不能打开数据报socket,或数据报socket无法与指定端口连接!");
}
while(true){
try{
byte []buf=new byte[100];
receivepacket=new datagrampacket(buf,buf.length);
receivesocket.receive(receivepacket);
textarea.append("\n服务器:");
byte[]data=receivepacket.getdata();
string receivedstring=new string(data);
textarea.append(receivedstring);
}catch (ioexception e){
textarea.append("\n网络通信出现错误,问题在"+e.tostring());
}
}
}
public boolean action(event e,object o){
try{
textarea.append("\n客户端:");
string string=o.tostring();
textarea.append(string);
byte[]databyte=new byte[100];
databyte=string.getbytes();
sendpacket=new datagrampacket(
databyte,string.length(),inetaddress.getbyname("localhost"),5000);
sendsocket.send(sendpacket);
}catch(ioexception ioe){
textarea.append("网络通信出现错误,问题在"+ioe.tostring());
}
return true;
}
}
 
0
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics