java网络编程应该怎样在客户端和服务器间实现通信?

java网络编程应该怎样在客户端和服务器间实现通信?,第1张

以前写的,照贴了。。。服务器端:import java.awt.*

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")

}

}

有两种方法:

客户端和服务端创建两个连接,一个连接用于发消息,一个连接用于发文件。

客户端和服务端使用同一个连接,数据不要直接发出去,按照一定的格式制订一个协议,数据一块一块的发,每块前面加上块类型和长度,类型表明发送的是消息数据还是文件数据。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/236581.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存