Java学習ノート(十五)15 Javaネットワークプログラミング、TCP実現チャット、ファイルアップロード、UDP送信メッセージ、チャット、マルチスレッドコンサルティング、URL
78974 ワード
ネットワークプログラミングコンピュータネットワーク: コンピュータネットワークとは、地理的に異なる独立した機能を有する複数のコンピュータおよびその外部機器を、通信回線を介して接続し、ネットワークオペレーティングシステム、ネットワーク管理ソフトウェアおよびネットワーク通信プロトコルの管理と協調の下で、資源共有と情報伝達を実現するコンピュータシステムである.
ネットワークプログラミングの目的 無線局、交流情報 を伝播する
この効果を達成するには何が必要ですか? ネットワーク上のホスト192.168.16.124:ポート、このコンピュータのリソース に位置する方法はこのホストを見つけて、どのようにデータ を伝送します javaweb:WebプログラミングB/S ネットワークプログラミング:TCP/IP S/C
ネットワーク通信の要素ネットワークの通信をどのように実現しますか? 通信双方のアドレス: ip ポート番号 ip:ポート番号—>192.168.16.124.5900 ルール:ネットワーク通信プロトコル TCP/IP参照モデル
IP ipアドレス:キーワードInetAddress ネットワーク上の唯一のコンピュータを特定する 127.0.0.1:本機localhost ipアドレスの分類 ipv 4 127.0.0.1、4バイト構成、0~255、42億; を使い果たしました ipv 6:128ビット.8個の符号なし証明書
パブリックネットワーク(インターネット)-プライベートネットワーク(ローカルエリアネットワーク) ABCD類アドレス 192.169.xx.xx、組織北部に専用に使用される
ドメイン名:IP(www.vip.com)を記憶するための ポートポートは、コンピュータ上のプログラムのプロセスです. 異なるプロセスには異なるポート番号があり、異なるソフトウェア を区別するために使用される.に規定するポート番号TCP、UDP数0~65535*2 単一プロトコルでは、ポート番号が と競合することはできません.ポート分類 パブリックポート0~1023 HTTP:80 HTTPS:443 FTP:21 Telent:23
プログラム登録ポート:1024~49151、ユーザーまたはプログラム使用の割り当て Tomcat:8080 MySQL:3306 Oracle:1521
ダイナミック、プライベート:49152~65535 TCP Udp比較 TCP:電話 接続、安定 3回握手4回手を振る クライアント、サービス側 伝送が完了し、接続が解放され、効率が低い UDP:メッセージ送信 非接続、不安定 クライアント、サービス側:明確な境界がない 準備ができているかどうかにかかわらず、 に送ることができます.ミサイル DDOS:洪水攻撃!
簡単なサーバクライアントシミュレーション TCP クライアント:接続サーバSocket->送信情報 サーバ:サービスポートServer Socketの作成->ユーザーの接続待ちaccept->ユーザー情報の受信 ファイル転送キー:FileInputStream,FileoutputStreamサーバ クライアント Tomcat サービス カスタムs TomcatサーバS:javaバックグラウンド開発!
クライアント カスタムC ブラウザB
UDP送信メッセージサーバに接続する必要はありません:キーワード:DatagramSocket サーバ クライアント 初歩的なチャットの実現 クライアント 受信端子
マルチスレッドコンサルティング送信側 受信端子 A B
URL統一リソースロケータ:リソースを位置決めし、インターネット上であるリソースを位置決めする DNSドメイン名解析www.baidu.com: xxx.x…x…x プロトコル://ipアドレス:ポート/プロジェクト名/リソース
ネットワーク通信の要素
IP
2001:0bb2:aaaa:0015:0000:0000:1aaa:1312
//
package Net;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class TcpSeriverDemo01 {
public static void main(String[] args) {
ServerSocket serverSocket=null;
Socket socket=null;
InputStream is =null;
ByteArrayOutputStream baos =null;
try {
serverSocket=new ServerSocket(9999);//
socket=serverSocket.accept();//
is = socket.getInputStream();//
baos=new ByteArrayOutputStream();//
byte[] buffer=new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
baos.write(buffer,0,len);
}
System.out.println(baos.toString());
} catch (IOException e) {
e.printStackTrace();
}finally {
//
if (baos!=null){
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (serverSocket!=null){
try {
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
//
package Net;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class TcpClientDemo01 {
//
public static void main(String[] args) {
Socket socket = null;
OutputStream os=null;
try {
InetAddress serverIP = InetAddress.getByName("127.0.0.1");//
int port = 9999;
socket=new Socket(serverIP,port);// socket
os=socket.getOutputStream();// IO
os.write(" ".getBytes());
} catch (Exception e) {
e.printStackTrace();
}finally {
if (os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (socket!=null){
try {
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
package Net.Demo02;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketAddress;
public class TcpServerDemo02 {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket=new ServerSocket(9000);
Socket socket = serverSocket.accept();
InputStream is =socket.getInputStream();
FileOutputStream fos =new FileOutputStream(new File("receive.jpg"));
byte[] buffer=new byte[1024];
int len;
while ((len=is.read(buffer))!=-1){
fos.write(buffer,0,len);
}
OutputStream os=socket.getOutputStream();
os.write(" ".getBytes());
fos.close();
is.close();
socket.close();
serverSocket.close();
}
}
package Net.Demo02;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
public class TcpClientDemo02 {
public static void main(String[] args) throws Exception {
InetAddress address= InetAddress.getByName("127.0.0.1");
Socket socket=new Socket(address,9000);
OutputStream os= socket.getOutputStream();
FileInputStream fis=new FileInputStream(new File("yanzi.jpg"));
byte[] buffer=new byte[1024];
int len;
while ((len=fis.read(buffer))!=-1){
os.write(buffer,0,len);
}
socket.shutdownOutput();
InputStream is =socket.getInputStream();
ByteArrayOutputStream baos=new ByteArrayOutputStream();
byte[] buffer2=new byte[2014];
int lens;
while((len=is.read(buffer2))!=-1){
baos.write(buffer2,0,len);
}
System.out.println(baos.toString());
fis.close();
os.close();
socket.close();
}
}
UDP送信メッセージ
package Net.Demo03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpServerDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket(9090);
byte[] buffer=new byte[1024];
DatagramPacket packet=new DatagramPacket(buffer,0,buffer.length);
socket.receive(packet);
System.out.println(packet.getAddress().getHostAddress());
System.out.println(new String(packet.getData(),0,packet.getLength()));
socket.close();
}
}
package Net.Demo03;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UdpClientDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket();
String msg=" , !";
InetAddress localhost=InetAddress.getByName("127.0.0.1");
int port=9090;
DatagramPacket packet=new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
socket.send(packet);
socket.close();
}
}
package Net.Demo04;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.*;
public class UdpsenderDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket();
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
while (true){
String data=reader.readLine();
byte[] datas= data.getBytes();
DatagramPacket packet =new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));
socket.send(packet);
if (data.equals("bye")){
break;
}
}
socket.close();
}
}
package Net.Demo04;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceiveDemo01 {
public static void main(String[] args) throws Exception {
DatagramSocket socket=new DatagramSocket(6666);
while (true){
byte[] container=new byte[1024];
DatagramPacket packet=new DatagramPacket(container,0,container.length);
socket.receive(packet);
byte[] data=packet.getData();
String receiveData=new String(data,0,data.length);
System.out.println(receiveData);
if (receiveData.equals("bye")){
break;
}
}
socket.close();
}
}
マルチスレッドコンサルティング
package Net.Demo05;
import org.jcp.xml.dsig.internal.dom.ApacheOctetStreamData;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;
public class TalkSend implements Runnable{
DatagramSocket socket=null;
BufferedReader reader=null;
private int fromPort;
private String toIP;
private int toport;
public TalkSend(int fromPort, String toIP, int toport) {
this.fromPort = fromPort;
this.toIP = toIP;
this.toport = toport;
try {
socket=new DatagramSocket(fromPort);
reader=new BufferedReader(new InputStreamReader(System.in));
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true){
try {
String data=reader.readLine();
byte[] datas =data.getBytes();
DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress(this.toIP,this.toport));
socket.send(packet);
if (data.equals("bye")){
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
}
package Net.Demo05;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class TalkReceive implements Runnable{
DatagramSocket socket=null;
private int port;
private String msgFrom;
public TalkReceive(int port,String msgFrom) {
this.port = port;
this.msgFrom=msgFrom;
try {
socket=new DatagramSocket(port);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void run() {
while (true){
try {
byte[] container=new byte[1024];
DatagramPacket packet=new DatagramPacket(container,0,container.length);
socket.receive(packet);
byte[] data=packet.getData();
String receiveData=new String(data,0,data.length);
System.out.println(msgFrom+":"+receiveData);
if (receiveData.equals("bye")){
break;
}
} catch (IOException e) {
e.printStackTrace();
}
}
socket.close();
}
}
package Net.Demo05;
public class TalkStudent {
public static void main(String[] args) {
new Thread(new TalkSend(7777,"localhost",9999)).start();
new Thread(new TalkReceive(8888," ")).start();
}
}
package Net.Demo05;
public class TalkTeacher {
public static void main(String[] args) {
new Thread(new TalkSend(5555,"localhost",8888)).start();
new Thread(new TalkReceive(9999," ")).start();
}
}
URL
package Net.PA;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class UrlDown {
public static void main(String[] args) throws Exception {
URL url=new URL("https://ws.stream.qqmusic.qq.com/C400002zpsxr1TlBvY.m4a?guid=7983659658&vkey=5EF7C88327DF6EDC07FB84C564CB1884F2D0B9AE7AACE0A72C8B387FB122CF1B1586FA8B6DE434A00A74B55AAE314FB2806E0C4C6B4F7DC9&uin=7739&fromtag=66");
HttpURLConnection urlConnection=(HttpURLConnection) url.openConnection();
InputStream inputStream=urlConnection.getInputStream();
FileOutputStream fos =new FileOutputStream("f.m4a");
byte[] buffer=new byte[1024];
int len;
while ((len=inputStream.read(buffer))!=-1){
fos.write(buffer,0,len);
}
fos.close();
inputStream.close();
urlConnection.disconnect();
}
}