日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

osi网络7层架构

發布時間:2024/1/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 osi网络7层架构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、osi網絡7層架構
ip:網絡唯一標識。(internet protocol address)網絡互聯協議地址。分為網絡地址和主機地址。
port:端口號,每一個網絡應用程序都需要一個以上的端口號。(1-65535)。1000以內的不要用。
osi7層架構

物理層,數據鏈路層,網絡層,傳輸層,會話層,表示層,應用層。

tcp協議(傳輸控制協議),保證兩個應用程序之間可靠的網絡通信。可靠的,低效的。
telent ftp smtp等
udp協議(用戶數據報文協議)。面向無連接的不可靠的,高效的。
qq snmp dns 在線視頻

二、socket簡介
套接字,用于描述一個ip和端口號綁定的通信會話(socket連接)。每一個網絡服務都會打開一個socket連接。
serverSocket
位于java的net包下面。

此類實現服務器套接字。服務器套接字等待請求通過網絡傳入。它基于該請求執行某些操作,然后可能向請求者返回結果。

Socket
此類實現客戶端套接字(也可以就叫“套接字”)。套接字是兩臺機器間通信的端點。

三、基于TCP協議的socket編程
創建一個基于tcp協議的scoket服務器
類 ServerSocket

此類實現服務器套接字。服務器套接字等待請求通過網絡傳入。它基于該請求執行某些操作,然后可能向請求者返回結果。
public class TalkServer {
public static void main(String[] args) throws Exception {
//創建一個serversocket在端口7000上,監聽客戶端請求
ServerSocket server= new ServerSocket(7000);
Socket socket = server.accept();//獲取socket對象
//由Scoket對象獲得輸入流,并構造相應的bufferedReader對象
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
//由socket對象得到輸出流,并構造printWrite對象
PrintWriter os = new PrintWriter(socket.getOutputStream(), true);
//由控制臺輸入構造BufferedReader對象
BufferedReader sin= new BufferedReader(new InputStreamReader(System.in));
System.out.println(“client:”+in.readLine());//打印客戶端消息
String line = sin.readLine();//從控制臺讀取輸入消息
while(!line.equals(“bye”)){
//把line返回給client
os.println(line);
System.out.println(“server:”+line);
System.out.println(“client:”+in.readLine());
line=sin.readLine();//讀取下一條消息

}in.close();os.close();sin.close();socket.close();}

}

使用多線程技術完成多服務對多客戶端

package com.aaa.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class TalkServerThread implements Runnable {

private Socket socket;public TalkServerThread(Socket socket) {super();this.socket = socket; }@Override public void run() {//由Scoket對象獲得輸入流,并構造相應的bufferedReader對象BufferedReader in;try {in = new BufferedReader(new InputStreamReader(socket.getInputStream()));//由socket對象得到輸出流,并構造printWrite對象PrintWriter os = new PrintWriter(socket.getOutputStream(), true);//由控制臺輸入構造BufferedReader對象BufferedReader sin= new BufferedReader(new InputStreamReader(System.in));System.out.println("client:"+in.readLine());//打印客戶端消息String line = sin.readLine();//從控制臺讀取輸入消息while(!line.equals("bye")){//把line返回給clientos.println(line);System.out.println("server:"+line);System.out.println("client:"+in.readLine());line=sin.readLine();//讀取下一條消息}in.close();os.close();sin.close();socket.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}

}

測試類
package com.aaa.tcp;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class MultiSocketServerTest {

/*** @param args* @throws Exception */ public static void main(String[] args) throws Exception {//多個socket連接,但是端口號一致ServerSocket server=new ServerSocket(7000);Socket socket=null;while(true){socket = server.accept();//等待獲取來自客戶端的socket請求//一旦客戶端請求到達,開啟一個線程,來跟客戶端交互new Thread(new TalkServerThread(socket)).start();}}

}

四、基于UDP協議的socket編程
InetAddress
public static void main(String[] args) throws Exception {
InetAddress localHost = InetAddress.getLocalHost();
String hostName = localHost.getHostName();
System.out.println(hostName);
String hostAddress = localHost.getHostAddress();
System.out.println(hostAddress);

//獲取遠程網站的ipInetAddress baidu = InetAddress.getByName("www.baidu.com");System.out.println(baidu.getHostAddress()); }

使用upd模擬飛秋發送消息
package com.aaa.network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Date;

/**

  • @author sunshaoshan

  • @description java 模擬飛秋發送消息

  • @company AAA軟件

  • 2018-11-5下午4:45:53
    */
    public class FeiQiuTest {

    /**
    *TODO
    *@param args
    *2018-11-5下午4:45:45
    */
    public static void main(String[] args) {
    DatagramSocket ds= null;
    DatagramPacket dp = null;
    InetAddress localHost;
    String Version=“1_lbt4_0#128#000C29D68D8F#0#0#0#2.5a”;
    Long id=new Date().getTime();//獲取當前系統毫秒
    String user=“孫韶山”;
    String host=“sunshaoshan”;
    //long IPMSG_SENDMSG = 0x00000020;//發消息
    long IPMSG_SENDMSG = 209;//發消息
    String msg=“I kill you!”;
    while(true){

    try {ds=new DatagramSocket();//localHost = InetAddress.getByName("DESKTOP-H5URIFQ");localHost=InetAddress.getLocalHost();String message=Version+":"+id+":"+user+":"+host+":"+IPMSG_SENDMSG+":"+msg;//封裝數據報文,2425是飛秋的端口號///1version(IPMSG版本):no(消息編號,可以用系統時間):user(發送消息的用戶名):host(發送消息的主機名):command(上述Command常量,可以用|組合多個值):msg(消息內容) byte[] buff= message.getBytes("gbk");dp = new DatagramPacket(buff, buff.length,localHost,2425);//發送報文ds.send(dp);} catch (UnknownHostException e) {e.printStackTrace();} catch (SocketException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}

    }

}

總結

以上是生活随笔為你收集整理的osi网络7层架构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。