Java TcpUdp小例子非异步Word文件下载.docx
《Java TcpUdp小例子非异步Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java TcpUdp小例子非异步Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。
importjava.awt.event.MouseEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.io.DataInputStream;
importjava.io.DataOutputStream;
importjava.io.IOException;
import.ServerSocket;
import.Socket;
publicclassTCPServerextendsFrame{
privateTextAreata=null;
privateTextFieldtf=null;
privatePanelsouthPanel=null;
privateButtonbtn=null;
privateThreadtReader=null;
privateSocketsConnect=null;
privatebooleankeepRunning=true;
TCPServermyFrame=null;
DataInputStreamdis=null;
DataOutputStreamdos=null;
/**
*主函数
*@paramargs
*/
publicstaticvoidmain(String[]args){
newTCPServer("
TCPServerV1.0"
).launchServer(8887);
}
publicTCPServer(Stringtitle){
super(title);
setLocation(100,150);
ta=newTextArea();
add(ta,BorderLayout.CENTER);
southPanel=newPanel(newGridLayout(1,2));
tf=newTextField();
btn=newButton("
Send"
);
//"
发送数据"
southPanel.add(tf);
southPanel.add(btn);
add(southPanel,BorderLayout.SOUTH);
pack();
myFrame=this;
btn.addMouseListener(newBtnMouseAdapter());
addWindowListener(newWindowAdapter(){
@Override
publicvoidwindowClosing(WindowEvente){
super.windowClosing(e);
keepRunning=false;
try{
if(tReader!
=null){
tReader.join(2000);
}
}catch(InterruptedExceptione1){
e1.printStackTrace();
}
myFrame.dispose();
System.exit(0);
}
});
setVisible(true);
publicvoidlaunchServer(intport){
ServerSocketss=null;
try{
ss=newServerSocket(port);
sConnect=ss.accept();
dos=newDataOutputStream(sConnect.getOutputStream());
dis=newDataInputStream(sConnect.getInputStream());
tReader=newThread(newSocketReader());
tReader.start();
ta.append("
客户端"
+sConnect.getInetAddress().toString()+"
已经连接到此服务器。
\n"
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
if(ss!
ss.close();
ss=null;
}catch(IOExceptione){
e.printStackTrace();
}
privatevoidsendMsg(){
Stringtem=tf.getText();
if(tem!
=null&
&
dos!
dos.writeUTF(tem);
ta.append("
向"
+sConnect.getInetAddress().toString()+"
:
"
+sConnect.getPort()+"
发送:
+tem+"
tf.setText("
privateclassBtnMouseAdapterextendsMouseAdapter{
@Override
publicvoidmouseClicked(MouseEvente){
super.mouseClicked(e);
sendMsg();
privateclassSocketReaderimplementsRunnable{
publicvoidrun(){
StringstrRead=null;
while(keepRunning){
strRead=dis.readUTF();
}catch(IOExceptione){
//e.printStackTrace();
System.out.println("
连接已断开。
ta.append(sConnect.getInetAddress().toString()+"
说:
+strRead+"
strRead=null;
}
TCPClient.java
import.UnknownHostException;
publicclassTCPClientextendsFrame{
TCPClientmyFrame=null;
//TODOAuto-generatedmethodstub
newTCPClient("
TcpClientV1.0"
).launchClient("
192.168.1.102"
8887);
publicTCPClient(Stringstring){
super(string);
setLocation(100,400);
southPanel=newPanel(newGridLayout(1,2));
publicvoidlaunchClient(Stringip,intport){
sConnect=newSocket(ip,port);
服务器端"
已经连接。
}catch(UnknownHostExceptione){
UDPServer
importjava.io.ByteArrayInputStream;
import.DatagramPacket;
import.DatagramSocket;
import.InetSocketAddress;
import.SocketException;
publicclassUDPServerextendsFrame{
privateDatagramSocketsSender=null;
privateDatagramSocketsRecver=null;
privateUDPServermyFrame=null;
privateDataInputStreamdis=null;
privateDataOutputStreamdos=null;
privateStringdestIp=null;
privateintportDest=0;
newUDPServer("
UDPServerV1.0"
).launchServer("
192.168.1.100"
6665,8888,6666);
publicvoidlaunchServer(StringdestIp,intportSend,intportDest,intportRecv){
this.destIp=destIp;
this.portDest=portDest;
sSender=newDatagramSocket(portSend);
//IP地址在数据包中标明
sRecver=newDatagramSocket(portRecv);
tReader=newThread(newUDPListener());
}catch(SocketExceptione){
ta.append(String.format("
启动服务器端(发送端口:
%d,接收端口:
%d)\n准备发送数据到:
%s:
%d\n\n"
portSend,portRecv,destIp,portDest));
publicUDPServer(Stringtitle){
sSender.close();
sRecver.close();
privatevoidsendMsg(){
byte[]bArray=tem.getBytes();
if(bArray!
sSender!
DatagramPacketdp=newDatagramPacket(bArray,bArray.length,newInetSocketAddress(destIp,portDest));
sSender.send(dp);
\n向"
+dp.getAddress()+"
+dp.getPort()+"
发送:
e.print