import java.awt.event.WindowAdapter
import java.awt.event.WindowEvent
import java.io.*
import java.net.*/*6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。
* 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。
* (20分)(服务端程序和客户端程序分别命名为Server.java和Client.java)*/
public class N4BT6 extends Frame
{
DatagramSocket socket
DatagramPacket packet byte[] buf
File file
FileInputStream input
String message = "该文件不存在"
TextArea text
public N4BT6(String title)
{
super(title)
text = new TextArea(6,4)
add(text)
setSize(400, 300)
setVisible(true)
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose()
}
})
buf = new byte[1024]
try
{
socket = new DatagramSocket(1230)
packet = new DatagramPacket(buf, buf.length)
socket.receive(packet)
file = new File(new String(packet.getData()))
socket = new DatagramSocket()
}
catch (Exception e)
{e.printStackTrace()
}
if(file.exists())
{
try
{
buf = new byte[(int)file.length()]
packet = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),1234)
input = new FileInputStream(file)
input.read(buf)
socket.send(packet)
}
catch (IOException e)
{
e.printStackTrace()
}
}
else
{
try
{
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1234)
socket.send(packet)
}
catch (Exception e)
{
e.printStackTrace()
}
}
}
public static void main(String[] args)
{
new N4BT6("Server")
}
}
客户端:import java.awt.*
import java.awt.event.*
import java.net.DatagramPacket
import java.net.DatagramSocket
import java.net.InetAddresspublic class N4BT6_2 extends Frame
{
TextArea text
String message = "Q.txt"
DatagramSocket socket
DatagramPacket packet
byte[] buf
public N4BT6_2(String title)
{
super(title)
text = new TextArea(6,4)
add(text)
setSize(400, 300)
setVisible(true)
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
dispose()
}
})
try
{
socket = new DatagramSocket()
packet = new DatagramPacket(message.getBytes(),message.getBytes().length,
InetAddress.getLocalHost(),1230)
socket.send(packet)
}
catch (Exception e)
{
e.printStackTrace()
}
try
{
buf = new byte[1024]
socket = new DatagramSocket(1234)
packet = new DatagramPacket(buf,buf.length)
socket.receive(packet)
text.append(new String(buf))
}
catch (Exception e)
{
e.printStackTrace()
}
}
public static void main(String[] args)
{
new N4BT6_2("Client")
}
}
JAVA进程间通信的方法主要有以下几种:(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。
(2)命名管道(named
pipe):命名管道克服了管道没有名字的限制
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)