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

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

以前写的,照贴了。。。服务器端:import javaawt;\x0d\import javaawteventWindowAdapter;\x0d\import javaawteventWindowEvent;\x0d\import javaio;\x0d\import javanet;/6、 采用UDP协议,编写一个Java网络应用程序,该应用分服务器端程序和客户端程序两部分。\x0d\ 客户端指定一个服务器上的文件名,让服务器发回该文件的内容,或者提示文件不存在。\x0d\ (20分)(服务端程序和客户端程序分别命名为Serverjava和Clientjava)/\x0d\public class N4BT6 extends Frame\x0d\{\x0d\DatagramSocket socket ;\x0d\DatagramPacket packet ;byte[] buf ;\x0d\File file ;\x0d\FileInputStream input;\x0d\String message = "该文件不存在";\x0d\TextArea text;\x0d\public N4BT6(String title)\x0d\{\x0d\super(title);\x0d\text = new TextArea(6,4);\x0d\add(text);\x0d\setSize(400, 300);\x0d\setVisible(true);\x0d\addWindowListener(new WindowAdapter()\x0d\{\x0d\public void windowClosing(WindowEvent e)\x0d\{\x0d\dispose();\x0d\}\x0d\});\x0d\\x0d\buf = new byte[1024];\x0d\try\x0d\{\x0d\socket = new DatagramSocket(1230);\x0d\packet = new DatagramPacket(buf, buflength);\x0d\socketreceive(packet);\x0d\file = new File(new String(packetgetData()));\x0d\socket = new DatagramSocket();\x0d\} \x0d\catch (Exception e)\x0d\{eprintStackTrace();\x0d\}\x0d\\x0d\if(fileexists())\x0d\{\x0d\try\x0d\{\x0d\buf = new byte[(int)filelength()];\x0d\packet = new DatagramPacket(buf,buflength,InetAddressgetLocalHost(),1234);\x0d\input = new FileInputStream(file);\x0d\inputread(buf);\x0d\socketsend(packet);\x0d\}\x0d\catch (IOException e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\else\x0d\{\x0d\try\x0d\{\x0d\packet = new DatagramPacket(messagegetBytes(),messagegetBytes()length,\x0d\InetAddressgetLocalHost(),1234);\x0d\socketsend(packet);\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\\x0d\}\x0d\public static void main(String[] args)\x0d\{\x0d\new N4BT6("Server");\x0d\}\x0d\}\x0d\客户端:import javaawt;\x0d\import javaawtevent;\x0d\import javanetDatagramPacket;\x0d\import javanetDatagramSocket;\x0d\import javanetInetAddress;public class N4BT6_2 extends Frame\x0d\{\x0d\TextArea text;\x0d\String message = "Qtxt";\x0d\DatagramSocket socket ;\x0d\DatagramPacket packet;\x0d\byte[] buf;\x0d\public N4BT6_2(String title)\x0d\{\x0d\super(title);\x0d\text = new TextArea(6,4);\x0d\add(text);\x0d\setSize(400, 300);\x0d\setVisible(true);\x0d\addWindowListener(new WindowAdapter()\x0d\{\x0d\public void windowClosing(WindowEvent e)\x0d\{\x0d\dispose();\x0d\}\x0d\});\x0d\try\x0d\{\x0d\\x0d\socket = new DatagramSocket();\x0d\packet = new DatagramPacket(messagegetBytes(),messagegetBytes()length,\x0d\InetAddressgetLocalHost(),1230);\x0d\socketsend(packet);\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\\x0d\try\x0d\{\x0d\buf = new byte[1024];\x0d\socket = new DatagramSocket(1234);\x0d\packet = new DatagramPacket(buf,buflength);\x0d\socketreceive(packet);\x0d\textappend(new String(buf));\x0d\}\x0d\catch (Exception e) \x0d\{\x0d\eprintStackTrace();\x0d\}\x0d\}\x0d\public static void main(String[] args)\x0d\{\x0d\new N4BT6_2("Client");\x0d\}\x0d\}

服务器和客户端在通信之前会先建立TCP连接,就是常说的三次握手过程。

TCP连接建立之后,服务器和客户端就可以互通数据了,可以通过HTTP、FTP、SMTP等等的协议进行各种应用,服务器有通用的服务端口,例如80是HTTP服务,21是FTP服务,25是SMTP服务,这些端口号是通用的。而用户的端口号则是不确定的。所以,客户端需要某种服务时会先访问服务器的某个端口,并且通过TCP建立过程,告知服务器自己的端口号。

正如你所说的,黑客可以对客户端伪装成服务器、对服务器伪装成客户端,分别建立TCP连接,然后获取用户和服务器的信息。现在很多钓鱼陷阱就是这样**用户帐号、密码的。

木马攻击又是另外一回事了,木马主要是把木马程序载入用户电脑,然后**用户信息,当然通过中间人攻击来注入木马是常用的手段。

(1) 连接 当客户在浏览器上键入或单击一个URL时,客户程序就在网络上搜索定位正确的服务器,并与其连接。

(2) 请求 在连接后,客户程序向服务器发出一个请求,要求服务器向自己发送指定的信息。

(3) 响应 服务器收到请求,就向客户端传回所需要的文件。

(4)关闭 服务器发出数据后,就断开与客户端的连接,以便接受其他客户的连接。

如果只是两个客户端和一个服务器,可通过服务器转发即可,两个客户端连接到服务器,服务器把从A接收到的发给B,把从B接收到的发给A即可,如果要做成多个客户端的,则要给各个客户端分配ID,服务端好根据各个客户端和消息要转发送给客户端的ID来确定消息发送对象。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » java网络编程应该怎样在客户端和服务器间实现通信?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情