Java 学习之网络编程案例
生活随笔
收集整理的這篇文章主要介紹了
Java 学习之网络编程案例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
網(wǎng)絡(luò)編程案例
一,概念
1,網(wǎng)絡(luò)編程不等于網(wǎng)站編程
2,編程只和傳輸層打交道,即TCP和UDP兩個協(xié)議
二,案例
1,TCP實(shí)現(xiàn)點(diǎn)對點(diǎn)的聊天
Server端:兩個輸入流:讀客戶端和控制臺,一個輸出端:輸出客戶端
?
public class ChatServer {public static void main(String[] args) {try {ServerSocket serverSocket=new ServerSocket(44432);Socket socket=serverSocket.accept();//獲取客戶端的連接信息BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));//client 的輸入內(nèi)容PrintWriter printWriter =new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//往client輸出內(nèi)容System.out.println("client say:"+bufferedReader.readLine());Scanner bufferedReader1=new Scanner(System.in);//控制臺輸入內(nèi)容String message=bufferedReader1.next();while(!message.equals("end")) {printWriter.println(message);//send message to client printWriter.flush();System.out.println("client say:"+bufferedReader.readLine());// get message from clientmessage=bufferedReader1.next();}bufferedReader.close();printWriter.close();bufferedReader1.close();} catch (IOException e) {e.printStackTrace();}} }?
Client端:兩個輸入流:讀服務(wù)端和控制臺,一個輸出端:輸出服務(wù)端
public class ChatClient {public static void main(String[] args) {try {Socket socket=new Socket("127.0.0.1",44432);//獲取服務(wù)端的唯一標(biāo)識PrintWriter printWriter=new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));//BufferedWriter流也可以BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));BufferedReader bufferedReader1=new BufferedReader(new InputStreamReader(System.in));String message=bufferedReader1.readLine();while (!message.equals("end")){printWriter.write(message+"\r\n");//加\r\n,因?yàn)樽x取時是用readLine方式 ,等同于println方式printWriter.flush();//必須flush,不然另一端讀不到。。。System.out.println("server say:"+bufferedReader.readLine());message=bufferedReader1.readLine();}bufferedReader.close();bufferedReader1.close();} catch (IOException e) {e.printStackTrace();}} }2,UDP 實(shí)現(xiàn)高精度數(shù)字傳輸 ? 通過數(shù)據(jù)報形式
接收端:
public class UdpServer {public static void main(String[] args) {byte[] buf=new byte[1024];//存儲接受數(shù)據(jù)報的容器DatagramPacket datagramPacket=new DatagramPacket(buf,buf.length);//數(shù)據(jù)報內(nèi)容寫入容器try {DatagramSocket datagramSocket=new DatagramSocket(44423);while (true){datagramSocket.receive(datagramPacket);//接收發(fā)送方的數(shù)據(jù)報ByteArrayInputStream byteArrayInputStream=new ByteArrayInputStream(buf);DataInputStream dataInputStream=new DataInputStream(byteArrayInputStream);System.out.println("clint say:"+dataInputStream.readDouble());}} catch (Exception e) {e.printStackTrace();}} }發(fā)送端:
public class UdpClient {public static void main(String[] args) {double n=10000.00;try {ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();DataOutputStream dataOutputStream=new DataOutputStream(byteArrayOutputStream);dataOutputStream.writeDouble(n);//創(chuàng)建代有數(shù)據(jù)報內(nèi)容和目的地址DatagramPacket datagramPacket=new DatagramPacket(byteArrayOutputStream.toByteArray(),byteArrayOutputStream.toByteArray().length,new InetSocketAddress("127.0.0.1",44423));DatagramSocket datagramSocket=new DatagramSocket(53421);//指定發(fā)送的端口 datagramSocket.send(datagramPacket);} catch (Exception e) {e.printStackTrace();}} }?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/ksWorld/p/6775202.html
總結(jié)
以上是生活随笔為你收集整理的Java 学习之网络编程案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MariaDB Spider:实现MyS
- 下一篇: Linux日志2