欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      socket通信原理(精選多篇)

      時間:2019-05-15 13:23:36下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關的《socket通信原理》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《socket通信原理》。

      第一篇:socket通信原理

      ? Socket原理,大致分為以下幾個步驟。

      服務器端的步驟如下。

      (1)首先,在實用Socket之前,要首先初始化Socket,就是實用AfxSocketInit()函數(shù)。

      (2)在初始化完成以后,就可以建立服務端的Socket,然后實用該Sokcet開始偵聽整個網(wǎng)絡中的連接請求。

      (3)當檢測到來自客戶端的連接請求時,向客戶端發(fā)送收到連接請求的信息,并建立與客戶端之間的連接。連接的過程中,在MFC的框架中會觸發(fā)一個前面創(chuàng)建的服務端Socket的消息響應函數(shù)OnAccept(),我們將建立的連接的代碼放到該響應函數(shù)里面,在建立連接的過程中,會產(chǎn)生一個新的Socket,我們使用找個Socket來進行數(shù)據(jù)的通信。

      (4)在通信的過程中,服務器端的產(chǎn)生的新的Socket會通過一個消息響應函數(shù)OnReceive()來接受到達的數(shù)據(jù)。數(shù)據(jù)的發(fā)送可以使用Send()來完成(5)當完成通信后,服務器關閉與客戶端的Socket連接。

      客戶端的步驟如下。

      (1)同樣的,初始化Socket,并建立客戶端的Socket,確定要連接的服務器的主機名和端口。

      (2)發(fā)送連接請求到服務器(MFC中使用Connect()),并等待服務器的回饋信息。

      (3)連接成功后,與服務器進行數(shù)據(jù)的交互。

      (4)數(shù)據(jù)的讀取同服務端一樣,也是通過OnReceive()來完成的,數(shù)據(jù)的發(fā)送通過Send()即可。

      (5)數(shù)據(jù)處理完畢后,關閉自身的Socket連接。

      這就是網(wǎng)絡Socket的原理的簡單介紹,大家有什么疑問可以提出來,另外,在服務器端建立Socket連接的過程中,如何支持并發(fā)的最大數(shù)量,以及服務器端的負載問題,大家可以多加研究一下。

      第二篇:c語言簡單socket通信

      server:

      #include

      #include

      #pragma comment(lib,“ws2_32.lib”)

      int main(int argc, char* argv[]){

      //3?ê??ˉWSA

      WORD sockVersion = MAKEWORD(2,2);WSADATA wsaData;if(WSAStartup(sockVersion, &wsaData)!=0){return 0;} //′′?¨ì×?ó×? SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(slisten == INVALID_SOCKET){printf(“socket error!”);return 0;} //°ó?¨IPoí???ú sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(8888);sin.sin_addr.S_un.S_addr = INADDR_ANY;if(bind(slisten,(LPSOCKADDR)&sin, sizeof(sin))== SOCKET_ERROR){printf(“bind error!”);} //?aê??àìy if(listen(slisten, 5)== SOCKET_ERROR){} //?-?·?óê?êy?Y SOCKET sClient;sockaddr_in remoteAddr;printf(“l(fā)isten error!”);return 0;

      char revData[255];while(true){printf(“μè′yá??ó...n”);sClient = accept(slisten,(SOCKADDR *)&remoteAddr, &nAddrlen);if(sClient == INVALID_SOCKET)

      {

      printf(“accept error!”);

      continue;

      }

      printf(“?óêüμ?ò???á??ó£o%s

      inet_ntoa(remoteAddr.sin_addr));

      //?óê?êy?Y

      int ret = recv(sClient, revData, 255, 0);

      if(ret > 0)

      {

      revData[ret] = 0x00;

      printf(revData);

      }

      //·¢?íêy?Y

      char * sendData = ”??o?£?TCP?í?§??£?n“;

      send(sClient, sendData, strlen(sendData), 0);

      closesocket(sClient);

      }

      closesocket(slisten);

      WSACleanup();

      return 0;

      }

      client:

      #include

      #include

      #pragmacomment(lib,”ws2_32.lib“)

      rn”,int main(int argc, char* argv[])

      {

      WORD sockVersion = MAKEWORD(2,2);

      WSADATA data;

      if(WSAStartup(sockVersion, &data)!= 0)

      {

      return 0;

      }

      SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(sclient == INVALID_SOCKET)

      {

      printf(“invalid socket!”);

      return 0;

      }

      sockaddr_in serAddr;

      serAddr.sin_family = AF_INET;

      serAddr.sin_port = htons(8888);

      serAddr.sin_addr.S_un.S_addr = inet_addr(“127.0.0.1”);

      if(connect(sclient,(sockaddr *)&serAddr, sizeof(serAddr))SOCKET_ERROR)

      {

      printf(“connect error!”);

      closesocket(sclient);

      return 0;

      }

      char * sendData = “??o?£?TCP·t????£??òê??í?§??!n”;

      send(sclient, sendData, strlen(sendData), 0);

      char recData[255];

      int ret = recv(sclient, recData, 255, 0);

      if(ret > 0)

      {

      recData[ret] = 0x00;

      printf(recData);

      }

      closesocket(sclient);

      WSACleanup();

      return 0;

      } ==

      第三篇:vc socket通信實例總結

      VC++ socket通信實例 總結

      1.兩天計算機通信需要協(xié)議,通信的兩臺計算機IP必須唯一

      2.同一個計算機可以進行多個應用程序與其他計算機通信,IP地址唯一,而端口號是區(qū)別同一計算機(同一IP)的唯一標示。

      3.實際上就類似于一個辦公室的總機號碼(IP)和分機號碼(端口號)

      4.協(xié)議:為了進行網(wǎng)絡中的數(shù)據(jù)交換(通信)而建立的規(guī)則、標準或約定

      5.協(xié)議=語義+語法+規(guī)則 6.不同層具有各自不同的協(xié)議

      7.上層使用下層提供的服務,實際通信在最底層完成

      8.對等層實體之間虛擬通信| 9.TCP:面向連接的可靠的傳輸協(xié)議 10.UDP:面向無連接的不可靠的傳輸協(xié)議

      11.端口是一種抽象的軟件結構。應用程序通過系統(tǒng)調用與某端口建立連接后,傳輸層傳給端口的數(shù)據(jù)都被響應的進行所接收,相應進程發(fā)給傳輸層的數(shù)據(jù)都通過該端口輸出。12.端口用一個整數(shù)型標示符來表示。端口號跟協(xié)議相關,TCP/IP傳輸層的兩個協(xié)議TCP和UDP是完全獨立的兩個軟件模塊,因此各自的端口號也相互獨立。13.端口使用一個16位的數(shù)字來表示,它的范圍是0~65535,1024以下的端口號保留給預定義的服務。例如:http使用的是80端口。

      14.socket(套接字):windows sockets只支持一個通信區(qū)域:網(wǎng)際域(AF_INET),這個域被使用網(wǎng)際協(xié)議簇通信的進程使用。

      15.C/S模式:客戶機向服務器提出請求,服務器接收到請求后,提供相應的服務。16.套接字的類型

      a)

      流式套接字:(SOCK_STREAM):面向連接可靠的數(shù)據(jù)傳輸服務,按順序接收

      b)

      數(shù)據(jù)包式套接字:(SOCK_DGRAM):無連接服務。接收順序混亂。

      c)

      原始套接字(SOCK_RAM)17.基于TCP(面向連接)的socket編程 a)

      服務器端程序:

      i.創(chuàng)建套接字socket

      ii.將套接字綁定到一個本地地址和端口上bind

      iii.將套接字設為監(jiān)聽模式,準備接收客戶請求listen

      iv.等待客戶請求到了;當請求到來后,接收連接請求,返回一個新的對應于此次連接的套接字accept

      v.和客戶端進行通信rend/recv

      vi.戶請求

      vii.b)

      客戶端程序:

      i.socket

      ii.接請求connect

      iii.通信rend/recv

      iv.18.基于UDP的socket編程 a)

      服務器端(接收端)程序:

      i.socket

      用返回的套接字 返回,等待另一客關閉套接字

      創(chuàng)建套接字

      向服務端發(fā)出連

      和服務器端進行 關閉套接字

      創(chuàng)建套接字

      ii.將套接字綁定到一個本地地址和端口上bind

      iii.等待接收數(shù)據(jù)recv/from

      iv.關閉套接字 b)

      客戶端(發(fā)送端)程序:

      i.創(chuàng)建套接字socket

      ii.向服務器發(fā)送數(shù)據(jù)sendto

      iii.關閉套接字 19.int WSAStartup(WORD wVersionRequested, //打算使用的最高winsock版本號

      LPWSADATA lpWSAData //是個結構體,接收socket的詳細信息);20.alt+F8:格式化代碼 21.面向TCP的連接,服務器端

      a)

      套接字SOCKET socket(int af,//指定地址簇

      int type,//socket類型

      int protocol //協(xié)議);b)

      綁定int bind(SOCKET s,//要綁定的套接字

      const struct sockaddr FAR* name, //指定了該套接字的本地地址信息

      int namelen

      //該地址結構的長度);struct sockaddr {

      u_short

      sa_family;

      char

      sa_data[14];};c)

      監(jiān)聽int listen(SOCKET s,int backlog);d)

      接受連接SOCKET accept(SOCKET s,struct sockaddr FAR* addr,int FAR* addrlen);e)

      發(fā)送int send(SOCKET s,//建立連接的socket const char FAR * buf, //發(fā)送的數(shù)據(jù)

      int len,//發(fā)送數(shù)據(jù)的長度

      int flags);f)

      接收int recv(SOCKET s,char FAR* buf,int len,int flags);g)

      需要的文件#include 需要連接一個動態(tài)鏈接庫:ws2_32.lib 22.服務器端: a)

      Socket b)

      連接:connect int connect(SOCKET s,const struct sockaddr FAR* name,int namelen);c)

      接收:recv d)

      發(fā)送:send e)

      關閉:closesocket

      Tcp服務端程序:=========#include

      #include

      voidmain()

      {

      WORD wVersionRequested;

      WSADATA wsaData;

      int err;

      wVersionRequested = MAKEWORD(1, 1);

      err = WSAStartup(wVersionRequested, &wsaData);

      if(err!= 0){

      return;

      }

      if(LOBYTE(wsaData.wVersion)!= 1 ||

      HIBYTE(wsaData.wVersion)!= 1){

      WSACleanup();

      return;

      }

      SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);

      SOCKADDR_IN addrSrv;

      addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

      addrSrv.sin_family=AF_INET;

      addrSrv.sin_port=htons(6000);

      bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

      listen(sockSrv,5);

      SOCKADDR_IN addrClient;

      int len=sizeof(SOCKADDR);

      while(1)

      {

      SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);

      char sendBuf[100];

      sprintf(sendBuf,“Welcome %s to 劉洼村”,inet_ntoa(addrClient.sin_addr));

      send(sockConn,sendBuf,strlen(sendBuf)+1,0);

      char recvBuf[100];

      recv(sockConn,recvBuf,100,0);

      printf(“%sn”,recvBuf);

      closesocket(sockConn);

      }

      } 24.Tcp客戶端程序:[cpp] view plaincopy#include

      #include

      void main(){

      WORD wVersionRequested;

      WSADATA wsaData;

      int err;

      wVersionRequested = MAKEWORD(1, 1);

      err = WSAStartup(wVersionRequested, &wsaData);

      if(err!= 0){

      return;

      }

      if(LOBYTE(wsaData.wVersion)!= 1 ||

      HIBYTE(wsaData.wVersion)!= 1){

      WSACleanup();

      return;

      }

      SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);

      SOCKADDR_IN addrSrv;

      addrSrv.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);//服務器端的地址

      addrSrv.sin_family=AF_INET;

      addrSrv.sin_port=htons(6000);

      connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

      char recvBuf[100];

      recv(sockClient,recvBuf,100,0);

      printf(“%sn”,recvBuf);

      send(sockClient,“This is 劉洼村”,strlen(“This is 劉洼村”)+1,0);

      closesocket(sockClient);

      WSACleanup();}

      25.運行之后,開啟了6個客戶端,一個服務器端。程序運行效果:

      26.面向UDP的連接 27.服務器:socket a)

      bind b)

      接收數(shù)據(jù):int recvfrom(SOCKET s,//套接字

      char FAR* buf,//接收數(shù)據(jù)

      int len,//長度

      int flags,//會影響調用行為,0 struct sockaddr FAR* from, //接收發(fā)送方的地址信息

      int FAR* fromlen

      //接收長度);c)

      關閉closesocket d)

      Cleanup 28.UDP服務器端程序:[cpp] view plaincopy#include

      #include

      void main(){

      WORD wVersionRequested;

      WSADATA wsaData;

      int err;

      wVersionRequested = MAKEWORD(1, 1);

      err = WSAStartup(wVersionRequested, &wsaData);

      if(err!= 0){

      return;

      }

      if(LOBYTE(wsaData.wVersion)!= 1 ||

      HIBYTE(wsaData.wVersion)!= 1){

      WSACleanup();

      return;

      }

      SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);

      SOCKADDR_IN addrSrv;

      addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);

      addrSrv.sin_family=AF_INET;

      addrSrv.sin_port=htons(6000);

      bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

      SOCKADDR_IN addrClient;

      int len=sizeof(SOCKADDR);

      char recvBuf[100];

      recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);

      printf(“%sn”,recvBuf);

      closesocket(sockSrv);

      WSACleanup();

      } 28.UDP客戶端: a)

      socket定義

      b)

      發(fā)送:

      int sendto(SOCKET s,const char FAR * buf,int len,int flags,const struct sockaddr FAR * to,int tolen);29.UDP客戶端程序[cpp] view plaincopy#include

      #include

      void main(){

      WORD wVersionRequested;

      WSADATA wsaData;

      int err;

      wVersionRequested = MAKEWORD(1, 1);

      err = WSAStartup(wVersionRequested, &wsaData);

      if(err!= 0){

      return;

      }

      if(LOBYTE(wsaData.wVersion)!= 1 ||

      HIBYTE(wsaData.wVersion)!= 1){

      WSACleanup();

      return;

      }

      SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0);

      SOCKADDR_IN addrSrv;

      addrSrv.sin_addr.S_un.S_addr=inet_addr(“127.0.0.1”);

      addrSrv.sin_family=AF_INET;

      addrSrv.sin_port=htons(6000);

      sendto(sockClient,“Hello 劉洼村”,strlen(“Hello 劉洼村”)+1,0,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

      closesocket(sockClient);

      WSACleanup();} 運行結果:

      30.注意:每個程序都要加上ws2_32.lib鏈接庫。如下添加:

      By 劉洼村

      第四篇:通信原理

      通信的目的:傳遞消息中所包含的信息。

      消息:是物質或精神狀態(tài)的一種反映,例如語音、文字、音樂、數(shù)據(jù)、圖片或活動圖像等。信息:是消息中包含的有效內容。

      信道:將來自發(fā)送設備的信號傳送到接收端的物理媒質。分為有線信道和無線信道兩大類。模擬通信系統(tǒng)是利用模擬信號來傳遞信息的通信系統(tǒng)。

      數(shù)字通信系統(tǒng)是利用數(shù)字信號來傳遞信息的通信系統(tǒng)。

      信源編碼與譯碼目的:提高信息傳輸?shù)挠行?、完成?數(shù)轉換

      信道編碼與譯碼目的:增強抗干擾能力

      加密與解密目的:保證所傳信息的安全

      數(shù)字調制與解調目的:形成適合在信道中傳輸?shù)膸ㄐ盘?/p>

      同步目的:使收發(fā)兩端的信號在時間上保持步調一致。

      數(shù)字通信的特點

      優(yōu)點:

      抗干擾能力強,且噪聲不積累

      傳輸差錯可控

      便于處理、變換、存儲

      便于將來自不同信源的信號綜合到一起傳輸

      易于集成,使通信設備微型化,重量輕

      易于加密處理,且保密性好

      缺點:

      需要較大的傳輸帶寬

      對同步要求高

      通信系統(tǒng)的分類

      按通信業(yè)務分類:電報通信系統(tǒng)、電話通信系統(tǒng)、數(shù)據(jù)通信系統(tǒng)、圖像通信系統(tǒng) … … 按調制方式分類:基帶傳輸系統(tǒng)和帶通(調制)傳輸系統(tǒng)

      調制傳輸系統(tǒng)又分為多種調制,詳見書中表1-1。

      按信號特征分類:模擬通信系統(tǒng)和數(shù)字通信系統(tǒng)

      按傳輸媒介分類:有線通信系統(tǒng)和無線通信系統(tǒng)

      按工作波段分類:長波通信、中波通信、短波通信 … …

      按信號復用方式分類:頻分復用、時分復用、碼分復用

      通信方式:

      單工通信:消息只能單方向傳輸?shù)墓ぷ鞣绞?/p>

      半雙工通信:通信雙方都能收發(fā)消息,但不能同時收發(fā)的工作方式

      全雙工通信:通信雙方可同時進行收發(fā)消息的工作方式

      并行傳輸:將代表信息的數(shù)字信號碼元序列以成組的方式在兩條或兩條以上的并行信道上同時傳輸

      優(yōu)點:節(jié)省傳輸時間,速度快:不需要字符同步措施

      缺點:需要 n 條通信線路,成本高

      串行傳輸 :將數(shù)字信號碼元序列以串行方式一個碼元接一個碼元地在一條信道上傳輸優(yōu)點:只需一條通信信道,節(jié)省線路鋪設費用

      缺點:速度慢,需要外加碼組或字符同步措施

      第五篇:通信原理課程設計

      目錄

      一、設計目的和意義????????????????????2

      二、設計原理???????????????????????2

      1.2FSK的介紹?????????????????????????2

      2.2FSK的產(chǎn)生?????????????????????????2

      3.2FSK濾波器的調解及抗噪聲性能????????????????4

      4.2FSK解調原理????????????????????????7

      三、詳細設計步驟????????????????????^7 1.信號產(chǎn)生??????????????????????????7

      2.信號調制??????????????????????????7 3.信號解調??????????????????????????8

      四、設計結果及分析????????????????????8 1.信號產(chǎn)生??????????????????????????8 2.信號調制??????????????????????????8 3.信號解調??????????????????????????9 4.課程設計程序???????????????????????11

      五、心得體會??????????????????????15

      六、參考文獻???????????????????????16

      2FSK的調制解調仿真實現(xiàn)

      一、設計目的和意義

      1.熟練地掌握matlab在數(shù)字通信工程方面的應用; 2.了解信號處理系統(tǒng)的設計方法和步驟;

      3.理解2FSK調制解調的具體實現(xiàn)方法,加深對理論的理解,并實現(xiàn)2FSK的調制解調,畫出各個階段的波形;

      4.學習信號調制與解調的相關知識;

      5.通過編程、調試掌握matlab軟件的一些應用,掌握2FSK調制解調的方法,激發(fā)學習和研究的興趣。

      二、設計原理

      1.2FSK的介紹

      二進制頻率調制是用二進制數(shù)字信號控制正弦波的頻率隨二進制數(shù)字信號的變化而變化。由于二進制數(shù)字信息只有兩個不同的符號,所以調制后的已調信號有兩個不同的頻率f1和f2,f1對應數(shù)字信息“1”,f2對應數(shù)字信息“0”。二進制數(shù)字信息及已調載波如圖2-1所示。

      圖2-1 2FSK信號

      2.2FSK的產(chǎn)生

      在2FSK信號中,當載波頻率發(fā)生變化時,載波的相位一般來說是不連續(xù)的,這種信號稱為不連續(xù)2FSK信號。相位不連續(xù)的2FSK通常用頻率選擇法產(chǎn)生,如圖2-2所示:

      圖2-2 2FSK信號調制器

      兩個獨立的振蕩器作為兩個頻率發(fā)生器,他們受控于輸入的二進制信號。二進制信號通過兩個與門電路,控制其中的一個載波通過。調制器各點波形如圖2-3所示:

      圖2-3 2FSK調制器各點波形

      由圖2-3可知,波形g是波形e和f的疊加。所以,二進制頻率調制信號2FSK可以看成是兩個載波頻率分別為f1和f2的2ASK信號的和。由于“1”、“0”

      統(tǒng)計獨立,因此,2FSK信號功率譜密度等于這兩個2ASK信號功率譜密度之和,即

      (2-1)

      2FSK信號的功率譜如圖2-4所示:

      圖2-4 2FSK信號的功率譜

      由圖2-4看出,2FSK信號的功率譜既有連續(xù)譜又有離散譜,離散譜位于兩個載波頻率f1和f2處,連續(xù)譜分布在f1和f2附近,若取功率譜第一個零點以內的成分計算帶寬,顯然2FSK信號的帶寬為

      (2-2)為了節(jié)約頻帶,同時也能區(qū)分f1和f2,通常取|f1-f2|=2fs,因此2FSK信號的帶寬為

      (2-3)當|f1-f2|=fs時,圖2-4中2FSK的(2-4)對于功率譜是

      功率譜由雙峰變成單峰,此時帶寬為

      單峰的2FSK信號,可采用動態(tài)濾波器來解調。此處介紹功率譜為雙峰的2FSK信號的解調。

      3.2FSK濾波器的調解及抗噪聲性能

      2FSK信號的解調也有相干解調和包絡解調兩種。由于2FSK信號可看做是兩個2ASK信號之和,所以2FSK解調器由兩個并聯(lián)的2ASK解調器組成。圖2-5為相干2FSK和包絡解調。

      圖2-5 2FSK信號調解器

      相干2FSK抗噪聲性能的分析方法和相干2ASK很相似?,F(xiàn)將收到的2FSK信號表示為(2-5)當發(fā)送數(shù)字信息為“1”時,2FSK信號的載波頻率為f1,信號能通過上支路的帶通濾波器。上支路帶通濾波器的輸出是信號和窄帶噪聲ni1(t)的疊加(噪聲中的下標1表示上支路窄帶高斯噪聲),即

      (2-6)此信號與同步載波cos2πf1t相乘,再經(jīng)低通濾波器濾除其中的高頻成分,送給取樣判決器的信號為

      (2-7)上式中未計入系數(shù)1/2。與此同時,頻率為f1的2FSK信號不能通過下支路中的帶通濾波器,因為下支路中的帶通波器的中心頻率為f2,所以下支路帶通濾波器的輸出只有窄帶高斯噪聲,即

      πf2t相乘,再經(jīng)低通濾波器濾波后輸出為

      (2-8)此噪聲與同步載波cos2(2-9)上式中未計入系數(shù)1/2。定義

      (2-10)取樣判決器對x(t)取樣,取樣值為為

      (2-11)其中,nI1、nI2都是均值為0、方差的高斯隨機變量,所以x是均值為a、方差為的高斯隨機變量,x的概率密度函數(shù)為 概率密度曲線如圖2-6所示:

      (2-12)

      圖2-6 判決值的函數(shù)示意圖

      判決器對x進行判決,當x>0時,判發(fā)送信息為“1”,此判決是正確的; 當x<0時,判決發(fā)送信息為“0”,顯然此判決是錯誤的。由此可見,x<0的概率就是發(fā)“1”錯判成“0”的概率,即(2-13)

      當發(fā)送數(shù)字信號“0”時,下支路有信號,上支路沒有信號。用與上面分析完全相同的方法,可得到發(fā)“0” 碼時錯判成“1”碼的概率P(1/0),容易發(fā)現(xiàn),此概率與上式表示的P(0/1)相同,所以解調器的平均誤碼率為

      Pe=P(1)P(0/1)+P(0)P(1/0)=P(0/1)[P(1)+P(0)]=P(0/1)(2-14)所以

      (2-15)式中

      注意,式中無需“1”、“0”等概這一條件。

      4.2FSK解調原理

      2FSK的解調方式有兩種:相干解調方式和非相干解調方式,本次課程設計采用的是相干解調方式。根據(jù)已調信號由兩個載波f1、f2調制而成,相干解調先用兩個分別對f1、f2帶通的濾波器對已調信號進行濾波,然后再分別將濾波后的信號與相應的載波f1、f2相乘進行相干解調,再分別低通濾波、用抽樣信號進行抽樣判決器即可其原理如下:

      圖2-7 解調原理框圖

      輸入的信號為:S(t)=[∑аn*g(t-nTs)]cosω1t+[ān*g(t-nTs)]cosω1t(ān是аn的反碼)來設計仿真。

      三、詳細設計步驟

      1.信號產(chǎn)生:二進制隨機序列和兩列頻率不等的載波

      1)利用matlab 庫函數(shù)產(chǎn)生10個二進制隨機數(shù),也就是我們的基波調制信號a。并畫出其波形。

      2)產(chǎn)生兩列余弦波tuf1和tuf2,頻率分別為f1=20hz,f2=100hz;并畫出其波形。

      2.信號調制:產(chǎn)生2FSK信號和加入高斯噪聲后的2FSK信號

      1)用二進制序列a去調制f1和f2,產(chǎn)生2fsk信號,具體做法是用以a生成的方波信號g1a直接與tuf1相乘,用a取反后的方波g2a與tuf2相乘,再將兩列信號相加。并畫出其波形。

      2)調用matlab 庫函數(shù)產(chǎn)生高斯噪聲no,并與2fsk信號相加得到加入噪聲后的sn信號。并畫出其波形。

      3.信號解調:

      1)對于兩列讓sn通過兩個帶通濾波器H1和H2,他們分別以f1和f2為中心頻率,并畫出經(jīng)過帶通濾波器后的波形。

      2)對這兩列波形分別相干解調乘以與他們同頻同相的余弦波tuf1和tff2,畫出此時的波形。

      3)讓這兩列波形再通過低通濾波器sw1和sw2得到這兩列基帶調制波形g1a和g2a.畫出其波形。

      4)最后將兩列波g1a和g2a通過抽樣判決器,畫出其波形st,并與之前調制后的波形sn做對比。

      四、設計結果及分析

      1.信號產(chǎn)生 波形figure(1)

      圖4-1 figure(1)

      figure(1)分析:第一幅圖現(xiàn)實了此時產(chǎn)生的二進制序列是1011011011,第二和第三幅圖片是頻率為20hz的載波tuf1和頻率為100hz的載波tuf2的波形。2.信號調制 波形figure(2)

      圖4-2 figure(2)

      figure(2)分析:由于產(chǎn)生的隨即序列是1011011011,對比上面figure2可以看出,波形較疏的是tuf1,波形較密的是tuf2,上圖呈現(xiàn)的序列是:1011011011,與調制波相符。3.信號解調 波形figure(3)

      圖4-3 figure(3)

      figure(3)分析:經(jīng)過帶通濾波器之后濾出了頻率為f1和f2的載波,從figure(2)和figure(3)的對比可以看出這一步做對了。波形figure(4)

      圖4-4 figure(4)

      figure(4)分析:這是兩列信號經(jīng)過相干解調乘以同頻同相的載波之后得到的波形,可以看出figure(4)比figure(3)的波形更密了。波形figure(5)

      圖4-5 figure(5)figure(5)分析:經(jīng)過低通濾波器之后,調制信號被濾出來了,第一幅為tuf1,濾波后的序列為:1011011011,與之前的調制信號相同。第二幅圖為:0100100100,與調制信號相反,這是因為在程序中隊調制信號取反之后才和tuf2相乘的。波形figure(6)

      圖4-6 figure(6)figure(6)分析:經(jīng)過抽樣判決之后,恢復出來的基帶信號是:1011011011,與調制信號一樣,從原始波形也可以看出,解調后的波形與調制信號相同。2FSK調制解調實現(xiàn)。4.課程設計程序: fs=2000;%抽樣頻率 dt=1/fs;f1=20;%定義兩列載波的頻率 f2=100;a=round(rand(1,10));%產(chǎn)生二進制隨機序列 g1=a;g2=~a;g11=(ones(1,2000))'*g1;%產(chǎn)生方波信號 g1a=g11(:)';g21=(ones(1,2000))'*g2;g2a=g21(:)';t=0:dt:10-dt;t1=length(t);tuf1=cos(2*pi*f1.*t)tuf2=cos(2*pi*f2.*t)

      subplot(311)n=0:9;x=square(1,50);stem([0:9],a*x);grid;xlabel('二進制隨機序列')ylabel('幅度')

      subplot(312);plot(t,tuf1);title('頻率為f1的余弦波')ylabel('幅度')

      subplot(313);plot(t,tuf2);title('頻率為f2的余弦波')ylabel('幅度')

      figure(2)fsk1=g1a.*tuf1;fsk2=g2a.*tuf2;fsk=fsk1+fsk2;no=0.01*randn(1,t1);%噪聲 sn=fsk+no;subplot(211);plot(t,fsk);title('2fsk波形')ylabel('幅度')

      subplot(212);plot(t,sn);title('加入高斯噪聲后的2fsk波形')ylabel('幅度的大小')xlabel('t')

      figure(3)%FSK解調

      b1=fir1(101,[10/800 20/800]);b2=fir1(101,[90/800 110/800]);%設置帶寬參數(shù)

      H1=filter(b1,1,sn);%b1為分子,1為分母,sn為濾波器輸入序列 H2=filter(b2,1,sn);%噪聲信號同時通過兩個濾波器 subplot(211);plot(t,H1);

      title('經(jīng)過帶通濾波器H1后的波形')%畫出經(jīng)過H1濾波器后的波形 ylabel('幅度');subplot(212);plot(t,H2);%畫出經(jīng)過濾波器二后的波形 title('經(jīng)過帶通濾波器H2后的波形')ylabel('幅度')xlabel('t')sw1=H1.*H1;%相干解調乘以同頻同相的載波 sw2=H2.*H2;%經(jīng)過相乘器

      figure(4)subplot(211);plot(t,sw1);title('經(jīng)過相乘器h1后的波形')%畫出乘以同頻同相載波后的波形 ylabel('幅度')subplot(212);plot(t,sw2);13

      title('經(jīng)過相乘器h2后的波形')ylabel('.幅度')xlabel('t')bn=fir1(101,[2/800 10/800]);%經(jīng)過低通濾波器

      figure(5)st1=filter(bn,1,sw1);st2=filter(bn,1,sw2);subplot(211);plot(t,st1);title('經(jīng)過低通濾波器sw1后的波形')%ylabel('幅度')%subplot(212);plot(t,st2);title('經(jīng)過低通濾波器sw2后的波形')ylabel('幅度')xlabel('t')%判決

      for i=1:length(t)if(st1(i)>=st2(i))st(i)=0;else st(i)=st2(i);end end

      figure(6)st=st1+st2;subplot(211);plot(t,st);title('經(jīng)過抽樣判決器后的波形')%ylabel('幅度')14

      經(jīng)過低通濾波器,濾出頻率為f1,f2的基帶調制信號波形 畫出經(jīng)過抽樣判決的波形

      subplot(212);plot(t,sn);title('原始的波形')ylabel('幅度')xlabel('t')

      五、心得體會

      課程設計不僅是對前面所學知識的一種檢驗,而且也是對自己能力的一種提高。下面我對整個課程設計過程做一下簡單的總結。第一,查資料室做課程設計的前期準備工作,好的開端就相當于成功了一半,到圖書館或上網(wǎng)找相關資料雖說是比較原始的方式,但也有可取之處。不管通過哪種方式查的資料都是有利用價值的,要一一記錄下來以備后用。第二,通過上面的過程,已經(jīng)積累了不少資料,對所給的課程也大概有了一些了解,這一步就在這樣的基礎上,綜合已有的資料來更透徹的分析題目。第三,有了研究方向,就該動手實現(xiàn)了。其實以前的兩步都是為這一步作的鋪墊。

      本次課程設計主要涉及到了通信原理和MATLB的相關知識與運用,主要有基帶信號的調制原理及方法、低通和帶通濾波器等等,加深了對上述相關知識的了解,使自己更深刻理解了調制與解調的原理和實現(xiàn)方法,以及基本掌握了MATLAB的基本應用。因為是以所學理論為基礎,所以在課程設計的過程中,我又重溫2FSK的調制與解調等知識,更加熟悉了MATLB里面的Simulink工具箱,學會了獨立建立模型,分析調制與解調結果,和加入噪聲之后的情況,通過自己不斷的調試,更好的理解加入噪聲對信道的影響。

      這次課程設計對我的自身能力有了進一步了解。第一點,這進一步端正了我的學習態(tài)度,學會了實事求是、嚴謹?shù)淖黠L,提高了動手能力。也要對自己嚴格要求,不能夠一知半解,要力求明明白白。浮躁的性格對于搞設計來說或者學習是致命的,一定要靜下心來,踏實的做事。第二點,我覺得動手之前,頭腦里必須清楚應該怎么做,這一點是很重要的,所謂三思而后行。

      在這次課程設計中我們遇到了許多的困難,由于粗心大意出了一些簡單的錯誤,浪費了許多時間去改正。還好在同學和老師的幫組下,給我指出了錯誤的原因以及改正的方法,我們組才順利的完成了本次課程設計。通過這次課程設計,15

      我學到了很多書本上沒有的知識。鍛煉了我們獨立思考問題、分析問題、解決問題的能力。而且本次設計有自己和本組成員共同完成。加強了和別人溝通的能力以及團隊精神,對我們走向社會是個很好的鍛煉。這個課程設計完成倉促,在編程過程中,我發(fā)現(xiàn)自己的程序還有很多地方可以完善,其中若有不足之前,請老師指出,我將及時改正。

      六、參考文獻

      [1] 王興亮 編著,《數(shù)字通信原理與技術》,西安電子科技大學出版社,第二版

      [2] 徐明遠 邵玉斌 編著,《MATLAB仿真在通信與電子工程中的應用》,西安電子科技大學出版社,2005 [3] 孫屹 吳磊編著, 《Simulink通信仿真開發(fā)手冊》,國防工業(yè)出版社,2003 [4] 黃葆華 牟華坤編著,《通信原理》,先電子科技大學出版社

      下載socket通信原理(精選多篇)word格式文檔
      下載socket通信原理(精選多篇).doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點此處下載文檔

      文檔為doc格式


      聲明:本文內容由互聯(lián)網(wǎng)用戶自發(fā)貢獻自行上傳,本網(wǎng)站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發(fā)現(xiàn)有涉嫌版權的內容,歡迎發(fā)送郵件至:645879355@qq.com 進行舉報,并提供相關證據(jù),工作人員會在5個工作日內聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權內容。

      相關范文推薦

        通信原理實驗報告

        一、 設計目的和意義 1、 2、 3、 熟練地掌握matlab在數(shù)字通信工程方面的應用。 了解信號處理系統(tǒng)的設計方法和步驟。 理解2FSK調制解調的具體實現(xiàn)方法,加深對理論的理解,并實......

        通信原理實驗報告

        通信原理實驗報告 中南大學 《通信原理》實驗報告 姓 名 班 級 學 號 課程名稱 指導教師 通信原理 董健 1 通信原理實驗報告 目錄 2 通信原理實驗報告 實驗一 數(shù)字基帶......

        通信原理教案

        《通信原理》 教案 開課學期:2016/2017學年第2學期 任課教師:張倫 所在系:通信工程 開課班級:04062401-04062404 學時數(shù):36講授26實驗10 信息與通信工程學院 第一章 緒論、第二......

        Ucenter通信原理

        Ucenter 通信原理 1、 用戶登錄bbs,通過logging.php文件,使得函數(shù)uc_user_login驗證,如果驗證成功,將調用函數(shù)uc_user_synlogin(位于uc_client/client.php文件中),在這個函數(shù)中調......

        通信原理小結

        總是上課時算是比較認真的,但是半期的時候還是沒有搞懂它是干什么的,甚至到期末了,也只有零星的一點編碼呀,帶寬呀,調制啦,這樣一些概念,但這些技術在一個通信系統(tǒng)中又是出于什么樣......

        通信原理心得體會

        通信原理心得體會1 通信原理是一門為我們日常使用的通信工具提供理論基礎的學科,它深入探討了不同類型、不同層次的通信,是我們作為信息時代的人必須要掌握的知識。在我學習......

        通信原理實驗報告

        1, 必做題目 1.1 無線信道特性分析 1.1.1 實驗目的 1) 了解無線信道各種衰落特性; 2) 掌握各種描述無線信道特性參數(shù)的物理意義; 3) 利用MATLAB中的仿真工具模擬無線信道的衰落......

        武大通信原理

        2012通信原理回憶版(荊州牛人瘋) 題目比較常規(guī) 第一大題是畫圖題 1小題.是希氏變換,F(xiàn)(w)求f(t) 5分 2. 畫噪聲功率譜 (指南p30 2-16) 5分 3.4ASK 課本(第二次修訂版)(p205 圖6-22) 5分 第......