麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Java > 正文

java socket 詳細介紹

2019-11-26 16:10:57
字體:
來源:轉載
供稿:網友

//返回本地主機名稱及IP地址;
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???

//通過計算機名稱獲取計算機相關信息;
InetAddress i = InetAddress.getByName("Livingstone-PC");

//通過域名獲取主機相關信息
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");

URL url = new URL("http://localhost:8080/demo.html");
url.getHost();

TCP:

Socket(客戶端):
在對象建立時,就可以去連接指定主機,因為TCP是面向連接的,所以在建立socket服務時,就要有服務端存在,并連接成功,連接通
后,在該通道進行數據傳輸;
// 創建客戶端的socket服務,指定目標主機和端口;
Socket s = new Socket("cj-PC", 10003);
// 為了發送數據,應該獲取socket流中的輸出流;
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("你好");
out.write("hello".getBytes());

// 接收回送消息
InputStream in = s.getInputStream();
byte[] bufIn = new byte[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));

s.close();// 流對象in封裝在socket中,自動關閉流對象;

ServerSocket(服務端):
建立服務端的socket服務,ServerSocket,并監聽一個端口;
獲取連接過來的客戶端對象,通過對象的accept方法,沒有連接就會等待(阻塞式):
客戶端如果發送數據過來,服務端要使用對應的客戶端對象的讀取流獲取客戶端發過來的數據;
ServerSocket ss = new ServerSocket(10003);

//ServerSocket(int port,int backlog);backlog為最大連接數目;
Socket s = ss.accept();
InputStream in = s.getInputStream();

byte[] buf = new byte[2014];
int len = in.read(buf);

String rec = new String(buf, 0, len);
System.out.println(rec);

// 回送消息
OutputStream out = s.getOutputStream();
out.write("收到".getBytes());

s.close();// 服務端會自動關閉客戶端;
(1)客戶端:
建立socket服務,指定要連接主機和端口;
獲取socket流中的輸出流,將數據寫到該流中,通過網絡發送給服務端;
獲取socket流中的輸入流,將服務端反饋的數據獲取,關閉客戶端資源;

UDP:

DatagramSocket:通過UDP傳輸方式,將一段文字數據發送出去;
Send:
// 創建udp服務,創建一個DatagramSocket對象并給定一個商品號;
DatagramSocket socket = new DatagramSocket(8888);

// 確定數據,并封裝成數據包,DatagramPacket(需指定目的機器的端口號);
byte[] buf = "udp I'm coming".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("Machine-Name"), 10086);
// 發送;
socket.send(dp);
// 關閉;
socket.close();
Receive:
// 定義udpsocket服務。通常會監聽一個端口,其實就是給這個接收網絡應用程序定義數字標識;
DatagramSocket socket = new DatagramSocket(10086);
while (true) { //目的是不斷監聽
byte[] buf = new byte[1024];
// 定義數據包,用于存儲數據;
DatagramPacket dp = new DatagramPacket(buf, buf.length);
// 通過服務的receive方法將收到的數據存入數據包中;
socket.receive(dp);// 阻塞式方法,沒數據就卡死在此;
// 通過數據包的方法獲取其中的數據;
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(), 0, dp.getLength());
int port = dp.getPort();
}

文件上傳:

Socket s = new Socket("Machine-Name", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = new byte[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// 停止發送數據
s.shutdownOutput();

ServerSocket ss = new ServerSocket(10005);//ss.accept()方法具有阻塞作用;
// 可為每一個accept()方法得到的Socket建立一個單獨的線程;

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 色综合久久99 | 久久国产精品久久精品国产演员表 | 精品国产96亚洲一区二区三区 | 欧美伦理一区二区 | 国产一区二区三区视频免费 | 性高潮一级片 | 亚洲午夜久久久精品一区二区三区 | 蜜桃成品人免费视频 | 成人午夜激情视频 | 日韩激情一区 | 亚洲第一页在线观看 | 国产精品亚洲欧美一级在线 | 一级毛片电影网 | 久久伊人国产精品 | 国产一级二级在线播放 | 欧美国产成人在线 | 一区二区视 | 视频一区二区三区免费观看 | 国产精品久久久久久久久久久天堂 | 欧美特级一级毛片 | 国产亚洲精品久久久久5区 综合激情网 | 久久久一区二区三区精品 | 久久免费视频5 | 国产一区二区三区在线免费观看 | 鲁丝片一区二区三区免费入口 | 91在线视频免费观看 | 欧美日韩免费在线观看视频 | 欧美成人精品不卡视频在线观看 | 久久精品视频7 | 日日狠狠久久偷偷四色综合免费 | 欧美日韩高清一区 | 亚洲电影在线观看高清免费 | 日日鲁夜夜视频热线播放 | 久久久久国产一区二区三区不卡 | 欧美黑人一级 | 日本不卡一区二区三区在线观看 | 91精彩视频| 国产99精品在线 | 亚洲成人午夜精品 | 国产无限资源在线观看 | 羞羞视频免费网站入口 |