生活随笔
收集整理的這篇文章主要介紹了
实验八网络程序设计(网络编程)_JAVA
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)驗(yàn)?zāi)康?#xff1a;
(1)掌握網(wǎng)絡(luò)通信的概念。 (2)掌握InetAddress、URL類(lèi)的使用。 (2)掌握J(rèn)AVA利用 TCP協(xié)議和UDP協(xié)議進(jìn)行通信的網(wǎng)絡(luò)編程方法。
實(shí)驗(yàn)內(nèi)容
1、從鍵盤(pán)輸入網(wǎng)址,讀取網(wǎng)址內(nèi)容,在顯示器進(jìn)行顯示,并存儲(chǔ)為文件test.html。
package sdut
. cs
; import java
. io
. FileOutputStream
;
import java
. io
. IOException
;
import java
. io
. InputStream
;
import java
. io
. OutputStream
;
import java
. net
. URL
;
import java
. util
. Scanner
; public class DemoTest { public static void main ( String
[ ] args
) throws IOException
{ Scanner reader
= new Scanner ( System
. in
) ; String str
= reader
. next ( ) ; URL url
= new URL ( str
) ; InputStream is
= url
. openStream ( ) ; OutputStream os
= new FileOutputStream ( "C:\\Users\\Administrator\\Desktop\\test.html" ) ; byte [ ] bytes
= new byte [ 1024 ] ; int len
; while ( ( len
= is
. read ( bytes
) ) != - 1 ) { os
. write ( bytes
, 0 , len
) ; } is
. close ( ) ; os
. close ( ) ; reader
. close ( ) ; } }
2、TCP Socket編程實(shí)現(xiàn)服務(wù)器和客戶(hù)端的交互:
(1)服務(wù)器端先運(yùn)行,利用循環(huán)時(shí)刻為客戶(hù)端提供服務(wù); (2)客戶(hù)端與服務(wù)器接通后,從鍵盤(pán)上輸入若干字符,傳到服務(wù)器,服務(wù)器在控制臺(tái)顯示所收收到的數(shù)據(jù),并向客戶(hù)端反饋信息"I have received ******",此次通話(huà)結(jié)束; (3)客戶(hù)端發(fā)送"quit"字符串,服務(wù)器終止程序。
package sdut
. cs
; import java
. io
. IOException
;
import java
. io
. InputStream
;
import java
. io
. OutputStream
;
import java
. net
. ServerSocket
;
import java
. net
. Socket
; public class TCPServer { public static void main ( String
[ ] args
) throws IOException
{ ServerSocket ss
= new ServerSocket ( 9999 ) ; InputStream is
; OutputStream os
; Socket socket
; while ( true ) { socket
= ss
. accept ( ) ; System
. out
. println ( "server:" + socket
) ; is
= socket
. getInputStream ( ) ; StringBuffer buffer
= new StringBuffer ( ) ; byte [ ] bytes
= new byte [ 10 ] ; int len
= 0 ; while ( ( len
= is
. read ( bytes
) ) != - 1 ) { String str
= new String ( bytes
, 0 , len
) ; buffer
. append ( str
) ; } System
. out
. println ( buffer
) ; socket
. shutdownInput ( ) ; os
= socket
. getOutputStream ( ) ; if ( buffer
. toString ( ) . equals ( "quit" ) ) { os
. write ( ( "I have received:服務(wù)器將停止服務(wù)" ) . getBytes ( ) ) ; socket
. shutdownOutput ( ) ; break ; } else { os
. write ( ( "I have received:" + buffer
) . getBytes ( ) ) ; System
. out
. println ( "服務(wù)器寫(xiě)出數(shù)據(jù)完成!" ) ; } socket
. shutdownOutput ( ) ; } is
. close ( ) ; os
. close ( ) ; socket
. close ( ) ; ss
. close ( ) ; } }
package sdut
. cs
; import java
. io
. IOException
;
import java
. io
. InputStream
;
import java
. io
. OutputStream
;
import java
. net
. InetAddress
;
import java
. net
. Socket
;
import java
. net
. UnknownHostException
;
import java
. util
. Scanner
; public class TCPClient { public static void main ( String
[ ] args
) throws UnknownHostException
, IOException
{ Scanner reader
= new Scanner ( System
. in
) ; Socket socket
= new Socket ( InetAddress
. getLocalHost ( ) , 9999 ) ; System
. out
. println ( "client:" + socket
) ; OutputStream os
= socket
. getOutputStream ( ) ; String Clientstr
= reader
. nextLine ( ) ; os
. write ( Clientstr
. getBytes ( ) ) ; System
. out
. println ( "客戶(hù)端讀取到數(shù)據(jù)!" + Clientstr
) ; socket
. shutdownOutput ( ) ; InputStream is
= socket
. getInputStream ( ) ; StringBuffer buffer
= new StringBuffer ( ) ; byte [ ] bytes
= new byte [ 10 ] ; int len
= 0 ; while ( ( len
= is
. read ( bytes
) ) != - 1 ) { String str
= new String ( bytes
, 0 , len
) ; buffer
. append ( str
) ; } System
. out
. println ( buffer
) ; is
. close ( ) ; os
. close ( ) ; socket
. close ( ) ; reader
. close ( ) ; } }
3、UDP Socket編程實(shí)現(xiàn)服務(wù)器和客戶(hù)端的交互:
(1)服務(wù)器端先運(yùn)行; (2)客戶(hù)端向服務(wù)器端發(fā)送數(shù)據(jù)"Hello World!",傳到服務(wù)器; (3)務(wù)器打印該信息的同時(shí),向客戶(hù)端發(fā)出信息"OK"; (4)客戶(hù)端收到信息后打印,通信結(jié)束。
package sdut
. cs
; import java
. io
. IOException
;
import java
. net
. DatagramPacket
;
import java
. net
. DatagramSocket
;
import java
. net
. InetAddress
;
public class UDPReceiver { public static void main ( String
[ ] args
) throws IOException
{ @SuppressWarnings ( "resource" ) DatagramSocket server
= new DatagramSocket ( 9999 ) ; byte [ ] bytes
= new byte [ 1024 ] ; DatagramPacket packet
= new DatagramPacket ( bytes
, bytes
. length
) ; System
. out
. println ( "等待接收數(shù)據(jù)..." ) ; server
. receive ( packet
) ; String str
= new String ( packet
. getData ( ) , 0 , packet
. getLength ( ) ) ; System
. out
. println ( "成功收到信息:" + str
) ; String strout
= "發(fā)送成功 OK" ; DatagramPacket packetOut
= new DatagramPacket ( strout
. getBytes ( ) , strout
. getBytes ( ) . length
, InetAddress
. getLocalHost ( ) , 3000 ) ; server
. send ( packetOut
) ; } }
package sdut
. cs
; import java
. io
. IOException
;
import java
. net
. DatagramPacket
;
import java
. net
. DatagramSocket
;
import java
. net
. InetAddress
; public class UDPSender { public static void main ( String
[ ] args
) throws IOException
{ DatagramSocket client
= new DatagramSocket ( 3000 ) ; String str
= "Hello World!" ; DatagramPacket packet
= new DatagramPacket ( str
. getBytes ( ) , str
. getBytes ( ) . length
, InetAddress
. getLocalHost ( ) , 9999 ) ; System
. out
. println ( "開(kāi)始發(fā)送消息:" + str
) ; client
. send ( packet
) ; byte [ ] bytes
= new byte [ 1024 ] ; DatagramPacket packetIn
= new DatagramPacket ( bytes
, bytes
. length
) ; client
. receive ( packetIn
) ; String strIn
= new String ( packetIn
. getData ( ) , 0 , packetIn
. getLength ( ) ) ; System
. out
. println ( strIn
) ; client
. close ( ) ; } }
總結(jié)
以上是生活随笔 為你收集整理的实验八网络程序设计(网络编程)_JAVA 的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔 網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔 推薦給好友。