1. 程式人生 > >UDP簡單例項

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依賴