黒馬プログラマー-java基礎-Socketネットワークプログラミング
4251 ワード
androidトレーニング、javaトレーニングはあなたと交流することを期待しています!
ネットワーク通信の3つの要素:
1、IPアドレス
2、ポート番号、ポート番号はアプリケーションのIDです.範囲:0-65535.このうち0-1024は推奨されません.
3、プロトコル、プロトコルはUDPとTCPプロトコルがある
UDP:データのパッケージング、データの大きさは制限があって、接続がなくて、効率は高くて、信頼できません.TCP:データチャネルを確立し、データサイズに制限がなく、効率が低く、信頼性が高い.
ネットワークプロトコルは、コンピュータネットワークにおけるデータ交換のために確立されたルール、標準、または約束の集合である.UDPは無接続向けで、データが安全ではなく、速度が速い.クライアントとサービスを区別しません.TCPは接続に向いており(3回握手)、データは安全で、速度はやや低い.クライアントとサービスに分けられます.Socket通信の両端にSocketがあります.ネット通信は実はSocket間の通信です.データは2つのSocket間でIOを介して転送される.Socketはアプリケーションで作成し、バインドメカニズムを介してドライバと関係を確立し、対応するIPとportを自分に伝える.
UDPプロトコル送信と受信データ:送信側:UDP送信側のDatagramSocketオブジェクトを作成データを作成し、データをパッケージング送信データ解放リソース受信側:UDP受信側のDatagramSocketオブジェクトを作成データ受信データ解析パケット解放リソースを受信するためのパケットを作成する
UDPケースコード
送信側のコード:
受信側コード
TCPプロトコルによるデータの送受信:
発
送り先:TCPクライアントのSocketオブジェクトを作成して出力ストリームを取得し、書き込みデータ解放リソース受信側:TCPサーバ側のSocketオブジェクトを作成してクライアント接続を傍受して入力ストリームを取得し、データを読み取る
リソースの解放
TCPケースコード
送信側コード
受信側コード:
ネットワーク通信の3つの要素:
1、IPアドレス
2、ポート番号、ポート番号はアプリケーションのIDです.範囲:0-65535.このうち0-1024は推奨されません.
3、プロトコル、プロトコルはUDPとTCPプロトコルがある
UDP:データのパッケージング、データの大きさは制限があって、接続がなくて、効率は高くて、信頼できません.TCP:データチャネルを確立し、データサイズに制限がなく、効率が低く、信頼性が高い.
ネットワークプロトコルは、コンピュータネットワークにおけるデータ交換のために確立されたルール、標準、または約束の集合である.UDPは無接続向けで、データが安全ではなく、速度が速い.クライアントとサービスを区別しません.TCPは接続に向いており(3回握手)、データは安全で、速度はやや低い.クライアントとサービスに分けられます.Socket通信の両端にSocketがあります.ネット通信は実はSocket間の通信です.データは2つのSocket間でIOを介して転送される.Socketはアプリケーションで作成し、バインドメカニズムを介してドライバと関係を確立し、対応するIPとportを自分に伝える.
UDPプロトコル送信と受信データ:送信側:UDP送信側のDatagramSocketオブジェクトを作成データを作成し、データをパッケージング送信データ解放リソース受信側:UDP受信側のDatagramSocketオブジェクトを作成データ受信データ解析パケット解放リソースを受信するためのパケットを作成する
UDPケースコード
送信側のコード:
package UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class SendDemo1 {
public static void main(String[] args) throws IOException {
// datagramSocket
DatagramSocket ds=new DatagramSocket();
// DatagramPacket(byte[] buf, int length, InetAddress address, int port)
InetAddress address=InetAddress.getByName(" ");// Socket IP
int port =8080;//
byte[] buf="Hello,UDP。 !".getBytes();//
int length =buf.length;
DatagramPacket dp=new DatagramPacket(buf,length,address,port);//
//
ds.send(dp);
//
ds.close();
}
}
受信側コード
package UDP;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class ReceiveDemo1 {
public static void main(String[] args) throws IOException {
// DatagramSocket ,
DatagramSocket ds=new DatagramSocket(10086);
//
byte[] by=new byte[1024];
int length=by.length;
DatagramPacket dp=new DatagramPacket(by,length);
//
ds.receive(dp);
//
InetAddress Address=dp.getAddress();
String ip=Address.getHostAddress();
byte[] by2 =dp.getData();// DatagramPacket getData ,
int length2 =dp.getLength();// DatagramPacket getLength ,
//
String s=new String(by2,0,length2);
System.out.println(ip+" :"+s);
//
ds.close();
}
}
TCPプロトコルによるデータの送受信:
発
送り先:TCPクライアントのSocketオブジェクトを作成して出力ストリームを取得し、書き込みデータ解放リソース受信側:TCPサーバ側のSocketオブジェクトを作成してクライアント接続を傍受して入力ストリームを取得し、データを読み取る
リソースの解放
TCPケースコード
送信側コード
package TCP;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class CopyMp3Client {
public static void main(String[] args) throws IOException{
// Socket
Socket s =new Socket("192.168.1.105",9999);
//
InputStream is=new FileInputStream("F:\\Beyond - .mp3");
//
OutputStream os=s.getOutputStream();
//
byte[] byt=new byte[1024];
int length=0;
while((length=is.read(byt))!=-1){
os.write(byt,0,length); //
}
//
s.shutdownOutput();
//
InputStream isClient=s.getInputStream();//
byte[] byt2=new byte[1024];//
String line=null;
int len=isClient.read(byt2);
String Client=new String(byt2,0,len);
System.out.println(Client);
//
is.close();
s.close();
}
}
受信側コード:
package TCP;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class CopyMp3Server {
public static void main(String[] args) throws IOException {
// Socket
ServerSocket ss=new ServerSocket(9999);
//
Socket s=ss.accept();
//
FileOutputStream os=new FileOutputStream("G:\\Copy- .mp3");
//
InputStream is=s.getInputStream();
byte[] byt=new byte[1024];
int len=0;
while((len=is.read(byt))!=-1){
os.write(byt, 0, len);
}
//
OutputStream osSever=s.getOutputStream();
osSever.write(" ".getBytes());
//
os.close();
s.close();
}
}