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

}

}

Socket通信

作为服务器端:

//生成服务器端,监听服务器设定的端口

ServerSocket

socketServer

=

new

ServerSocket(端口号)

//建立客户端和服务器端的链接,这时再看客户端

Socket

socket

=

socketServer.accept()

作为客户端:

//新建一个Socket,包含服务器端的IP和端口号,这样在服务器启动情况下可以建立和服务器的链接.

Socket

socket

=

new

Socket("IP地址","端口号")

这时,服务器端和客户端的连接已经建立,如果需要通信和传输数据的话分别在服务器端、客户端新建流对象,可以通过流对象实现双方之间的互通.

有关流的内容自己看书体会下就能写出B/S结构的通信了。

JAVA进程间通信的方法主要有以下几种: (1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存