UDP簡單例項
服務端:server.c
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <errno.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 12000 #define IP "192.168.48.130" typedef struct SERVER_INFO { int building; int uint; int room; unsigned int IPaddr; }INFO; //初始化socket void my_server(void) { int socketfd = -1; int count = 0; struct sockaddr_in serveraddr; struct sockaddr_in clientaddr; char buf[100]; //第一步,socket得到一個UDP的fd if((socketfd=socket(AF_INET,SOCK_DGRAM,0))<0) { perror("socket"); } //設定IP地址 int len=sizeof(clientaddr); bzero(&serveraddr,sizeof(serveraddr)); serveraddr.sin_family=AF_INET; //IP地址型別為IPv4 serveraddr.sin_port=htons(PORT); //埠號 serveraddr.sin_addr.s_addr=inet_addr(IP);//繫結IP //第二步,bind伺服器的IP if((bind(socketfd,(const struct sockaddr *)&serveraddr,sizeof(serveraddr)))<0) { perror("bind"); } else { printf("bind had success!\n"); } //第三步,資訊的接收與傳送 //接收來自伺服器的資訊 count=recvfrom(socketfd,buf,sizeof(buf),0,(struct sockaddr *)&clientaddr,&len); if(count<0) perror("recvfrom"); else { printf("server had recver %d byte\n",count); printf("server had recver %s byte\n",buf); } memset(buf,0,sizeof(buf)); //傳送資訊給客戶端 //要傳送的結構體資訊 int Buf[20]; INFO fenji; Buf[0]=fenji.building=1010; Buf[1]=fenji.uint=1; Buf[2]=fenji.room=15; Buf[3]=fenji.IPaddr=1921681180; sendto(socketfd,Buf,sizeof(fenji),0,(const struct sockaddr *)&clientaddr,len); printf("had send struct fenji \n"); close(socketfd); return; } int main(void) { my_server(); return 0; }
服務端:client.c
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <string.h> #include <errno.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define PORT 12000 #define IP "192.168.48.130" char buf[]="hello server!"; void my_client(void) { int socketfd = -1; int len=0; int count=0; struct sockaddr_in connectaddr; //第一步,socket得到一個UDP的fd if((socketfd=socket(AF_INET,SOCK_DGRAM,0))<0) { perror("socket"); } //設定IP地址(IP為要連線的伺服器地址) bzero(&connectaddr,sizeof(connectaddr)); connectaddr.sin_family=AF_INET; connectaddr.sin_port=htons(PORT); connectaddr.sin_addr.s_addr=inet_addr(IP); len=sizeof(connectaddr); /* UDP不需要connect //第二步,連線connect if(connect(socketfd,(const struct sockaddr *)&connectaddr,len)<0) { perror("connect"); } else { printf("connect is success!\n"); } */ printf("buf=%s\n",buf); //客戶端向服務端傳送 sendto(socketfd,buf,sizeof(buf),0,(const struct sockaddr *)&connectaddr,len); printf("buf=%s\n",buf); memset(buf,0,sizeof(buf)); //服務端接收客戶端的資訊 int Buf[20]; count=recvfrom(socketfd,Buf,sizeof(buf),0,(struct sockaddr *)&connectaddr,&len); printf("recive from server Buf[0]=%d\n",Buf[0]); printf("recive from server Buf[1]=%d\n",Buf[1]); printf("recive from server Buf[2]=%d\n",Buf[2]); printf("recive from server Buf[3]=%d\n",Buf[3]); close(socketfd); return; } int main(void) { my_client(); return 0; }
相關推薦
UDP簡單例項
服務端:server.c #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include &
java網路程式設計:12、基於UDP的socket程式設計(二)程式碼通訊-簡單例項
宣告:本教程不收取任何費用,歡迎轉載,尊重作者勞動成果,不得用於商業用途,侵權必究!!! 文章目錄 一、基於UDP伺服器端程式的編寫 二、基於UDP客戶端程式的編寫 三、系列文章(java網路程式設計) 通過上篇文章瞭解了基於UDP通訊的理論、基本步驟以及它跟TCP的區別
Java UDP的簡單例項以及知識點簡述
UDP的實現 Java中實現UDP協議的兩個類,分別是DatagramPacket資料包類以及DatagramSocket套接字類。 其與TCP協議實現不同的是: UDP的套接字DatagramSocket相比於Socket、ServerSocket來說,是一個非
UDP型別的C/S簡單例項
與TCP型別的C/S相比較,UDP缺少了connetc(),listen(),acept()函式,這是用於UDP協議無連線的特性,不用維護TCP的連線,斷開狀態 伺服器端大體的流程為建立套接字,套接字與地址結構進行繫結,收發資料,關閉套接字,分別對應於函式socket(),
Windows socket c++ TCP UDP 簡單客戶端 vs2013
進行 msg print type pro i/o while write n) socket 主要是網絡中進程之間的通信,起源於Unix,而“一切皆可文件”的思想一樣可以用在socket上,即 打開 -> 讀寫 -> 關閉。 int socket(int do
S2SH簡單例項註解版——登入功能實現
第一步:Spring4 整合 Hibernate4 Spring4 接管 Hibernate4 所有 Bean 例項,以及 SessionFactory,事務管理器; 泛型注入; Entity package com.java1234.entity; import j
簡單知識點例項之三:Bootstrap-Table和後臺進行百分百互動的簡單例項
這是一個針對前後臺互動的例子,可以直接套進專案中通暢執行。第二頁之所以資料不對,是因為例子畢竟沒有真正的後臺,所以資料不對。但是可以套入專案中,就正常了。 重點: 其中bootstrap-table有一個search:truse搜尋框的引數我沒有使用,而是自己寫了一個搜尋框,
express-session 簡單例項
express-session 例項 app.js var express = require('express'); var path = require('path'); var cookieParser = require('cookie-parser'); v
qt拖拽事件簡單例項
話不多說直接上程式碼,一看就懂 注意:當使用管理員許可權執行qt creator時,程式可能無法檢測到拖拽事件! widget.h 檔案 class Widget : public QWidget { Q_OBJECT public: explicit
Vue.js + Vue Router簡單例項
Vue.js + Vue Router簡單例項 使用 Vue.js ,我們已經可以通過組合元件來組成應用程式,當你要把 Vue Router 新增進來,我們需要做的是,將元件 (components) 對映到路由 (routes),然後告訴 Vue Router 在哪裡渲染它們。 1
WPF 路由事件簡單例項
在Winform窗體中,新增一個按鈕然後雙擊按鈕就可以在.cs程式碼自動生成有關事件的程式碼,這就是一個簡單的事件模型,但是如果對於大型的設計介面,數量過多的控制元件通過每次都生成相關的時間程式碼,將是一個好大的時間與控制元件的浪費,如何解決這個問題,可以用路由事件解決(通俗籠統的解釋,詳解自行查閱
使用scala基於AKKA HTTP開發REST介面的簡單例項
一般情況下會使用SpringMVC開發REST介面,但是公司主開發語言是scala,因此採用AKKA HTTP(spray已經不再維護)來開發REST介面,具體可參看官網文件:AKKA HTTP 本文依據官網開發REST介面,具體如下: 開發環境:IDEA,MAVEN,SCALA
Android UDP - 簡單訊息推送功能
近期接觸了幾個小的Android開發專案,根據需求要利用到網路傳輸中的UDP協議方式傳輸,遇到不少坑,在此分享一下在Android應用中UDP的一些簡單技術功能實現,希望能幫到用得到的同僚。 需(wo)求(yao)分(gan)析(ma): 從PC上輸入一串亂七八糟,然後能在我手機(某為pow
Keras 使用自己的資料分類,並使用tensorboard記錄的簡單例項
Keras 使用自己的資料分類,並使用tensorboard記錄的簡單例項 1.使用的分類圖片按照不同類別儲存在不同資料夾子中,並且切分好訓練集和測試集,如下圖顯示 注意:檔名建議使用標籤名 from keras.models import Sequential import
LTE關鍵技術之一:OFDMA(OFDM基本原理及簡單例項應用)
OFDM即正交頻分複用(Orthogonal Frequency Division Multiplexing),是多載波調製的一種,通俗來說就是通過多條互相沒有關係的通道傳輸不同的資訊。OFDM現在主要用於4G通訊上
JSON簡單例項
var a= { "_id" : 1, "name" : "abc", "age" : 13, "color" : "WHITE", "birthday" : "2000-12-10" } { "_id" : 2, "name" : "ed
關於Java中timer的一個簡單例項應用
效果展示 核心程式碼: Timer timer = new Timer();//新增定時器 timer.schedule( new TimerTask(){//重寫定時任務 public void run(){ button2.setText("取消"+S
JSON的簡單例項
JSON全稱是JavaScript Object Notation(JavaScript物件表示法),是一種儲存與交換文字資訊的語法,類似與XML,但 比 XML 更小、更快,更易解析。 理論就不多說了,直接上程式碼 <!DOCTYPE html> <htm
詳解Scala集合類之陣列的語法格式以及簡單例項
簡介 Scala 語言中提供的陣列是用來儲存固定大小的同類型元素。宣告陣列是宣告一個就像numbers這樣的變數,然後使用 numbers[0]、numbers[1]、…、numbers[99] 來表示一個個單獨的變數。陣列中某個指定的元素是通過索引來訪問的。 陣列的第一個元素索引為0,最
Kafka學習(三)簡單例項(可以簡單做測試)
java客戶端連線kafka簡單測試 本案例kafka版本是kafka_2.11-0.9.0.1,用java來實現kafka生產者、消費者的示例 在測試的過程中遇到的特別的問題以及解決辦法,其他小問題就不一一列舉了。 1 . 使用kafka-clients進行測試,maven依賴