-
限于個人能力,沒有能實現服務器端的多線程。
注冊、登錄、上傳文件到數據庫的功能基本都實現了。
源代碼:
https://pan.baidu.com/s/1TahTLXp2STzADhuehOMX5Q?pwd=13e5?
查看全部 -
基于UDP的Socket通信實現多線程:
/** *服務器端 */ package?com.imooc.UDPTest; import?java.io.IOException; import?java.net.DatagramPacket; import?java.net.DatagramSocket; import?java.net.InetAddress; public?class?Server?{ ????public?static?void?main(String[]?args)?throws?IOException?{ ????????//創建服務器端DatagramSocket,指定端口 ????????DatagramSocket?socket=new?DatagramSocket(8800); ????????byte[]?data=new?byte[1024]; ????????DatagramPacket?packet=new?DatagramPacket(data,data.length); ????????System.out.println("服務器端已經啟動,等待客戶端發送數據"); ????????int?count=0; ????????while?(true){ ????????????socket.receive(packet);//此方法在接收到數據包之前會一直堵塞 ????????????Thread?serverThread=new?ServerThread(socket,packet,data); ????????????serverThread.start(); ????????????InetAddress?address=packet.getAddress(); ????????????System.out.println("當前客戶端IP:"+address.getHostAddress()); ????????????count++; ????????????System.out.println("當前客戶端數量:"+count); ????????} ????} }
/** *服務器線程處理類 */ package?com.imooc.UDPTest; import?java.io.IOException; import?java.net.DatagramPacket; import?java.net.DatagramSocket; import?java.net.InetAddress; public?class?ServerThread?extends?Thread{ ????DatagramSocket?socket=null; ????DatagramPacket?packet=null; ????byte[]?data=null; ????public?ServerThread(DatagramSocket?socket,DatagramPacket?packet,byte[]?data){ ????????this.socket=socket; ????????this.packet=packet; ????????this.data=data; ????} ????public?void?run()?{ ????????String?info=new?String(data,0,packet.getLength()); ????????System.out.println("我是服務器,客戶端說:"+info); ????????InetAddress?address=packet.getAddress(); ????????int?port=packet.getPort(); ????????data="歡迎您".getBytes(); ????????packet=new?DatagramPacket(data,data.length,address,port); ????????try?{ ????????????socket.send(packet); ????????}?catch?(IOException?e)?{ ????????????e.printStackTrace(); ????????} ????} }
/** *客戶端 */ package?com.imooc.UDPTest; import?java.io.IOException; import?java.net.DatagramPacket; import?java.net.DatagramSocket; import?java.net.InetAddress; public?class?Client?{ ????public?static?void?main(String[]?args)?throws?IOException?{ ????????//定義服務器的地址、端口號、數據 ????????InetAddress?address=InetAddress.getByName("DESKTOP-M8K8E0E"); ????????int?port=8800; ????????byte[]?data="用戶名:admin;密碼:123".getBytes(); ????????//創建數據報,包含發送的數據信息 ????????DatagramPacket?packet=new?DatagramPacket(data,data.length,address,port); ????????//創建DatagramSocket對象 ????????DatagramSocket?socket=new?DatagramSocket(); ????????socket.send(packet); ????????byte[]?data1=new?byte[1024]; ????????DatagramPacket?packet1=new?DatagramPacket(data1,data1.length); ????????socket.receive(packet1); ????????String?info=new?String(data1,0,packet1.getLength()); ????????System.out.println("我是客戶端,服務器說:"+info); ????????socket.close(); ????} }
查看全部 -
不錯,項目思路清晰查看全部
-
?
對象
查看全部 -
?
傳輸對象
查看全部 -
傳遞
查看全部 -
傳遞文件
查看全部 -
四大類
查看全部 -
ip地址和端口號組成了scoket
查看全部 -
http超文件傳輸協議
查看全部 -
兩臺計算機要想能夠進行 通信,需要滿足一些必要的條件
唯一的標識:ip;用來標識自己的身份以及自己所處的地址
需要共同的語言;即協議
相應的端口號:每個主機上可以運行多個應用程序,使用端口號來決定與哪個應用進行通信
TCP/IP是目前世界上使用最為廣泛的協議
????TCP(Transmission Control Protocol)傳輸控制協議
????IP:Internet Protocol 互聯網協議
查看全部 -
該套課程重點知識
查看全部 -
UDP的兩個編程主要類
查看全部 -
socket多客戶端通信
查看全部 -
socket 通信模型和實現步驟
查看全部 -
socket過程中要考慮優先級,這影響到運行效率查看全部
-
多線程通信查看全部
舉報
0/150
提交
取消