UDP伺服器的簡單實現
伺服器端:
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/types.h>
#define ERR_EXIT(m) \
do\
{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)
int main(int argc, char* argv[])
{
if (argc < 3)
{
printf("./server [addr] [port]\n");
exit(EXIT_SUCCESS);
}
int sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock < 0)
ERR_EXIT("socket");
struct sockaddr_in local;
local.sin_family = AF_INET;
local.sin_port = htons(atoi(argv[2]));
local.sin_addr.s_addr = inet_addr(argv[1 ]);
if(bind(sock, (struct sockaddr*)&local, sizeof(local)) < 0)
ERR_EXIT("bind");
char buf[1024];
struct sockaddr_in client;
while(1)
{
buf[0] = 0;
socklen_t len = sizeof(client);
ssize_t s = recvfrom(sock, buf, sizeof(buf)-1, 0, (struct sockaddr*)&client, &len);
buf[s] = 0 ;
if(strcmp(buf, "quit\n") == 0)
{
printf("client quit!\n");
continue;
}
if(s > 0)
{
printf("[%s:%d]: %s", inet_ntoa(client.sin_addr), ntohs(client.sin_port), buf);
sendto(sock, buf, strlen(buf), 0, (struct sockaddr*)&client, sizeof(client));
}
}
return 0;
}
客戶端:
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <string.h>
#include <sys/types.h>
#define ERR_EXIT(m) \
do\
{\
perror(m);\
exit(EXIT_FAILURE);\
}while(0)
int main(int argc, char* argv[])
{
if(argc < 3)
{
printf("./client [addr] [port]\n");
exit(EXIT_SUCCESS);
}
int sock = socket(AF_INET, SOCK_DGRAM, 0);
if(sock < 0)
ERR_EXIT("socket");
struct sockaddr_in server;
server.sin_family = AF_INET;
server.sin_port = htons(atoi(argv[2]));
server.sin_addr.s_addr = inet_addr(argv[1]);
char buf[1024];
struct sockaddr_in peer;
while(1)
{
buf[0] = 0;
socklen_t len = sizeof(peer);
write(1, "please input:>", strlen("please input:>"));
ssize_t s = read(0, buf, sizeof(buf)-1);
if(s > 0)
{
buf[s] = 0;
sendto(sock, buf, strlen(buf), 0, (struct sockaddr*)&server, sizeof(server));
if(strcmp(buf, "quit\n") == 0)
exit(EXIT_SUCCESS);
s = recvfrom(sock, buf, sizeof(buf)-1, 0, (struct sockaddr*)&peer, &len);
if(s > 0)
{
buf[s] = 0;
printf("server: %s", buf);
}
}
}
return 0;
}
通過UDP伺服器端和客戶端程式,可在區域網內進行對話:
由於條件有限,因此這裡就在本機兩個終端演示。當兩臺主機處於同一個區域網下時,可用此程式實現兩臺主機的對話。
相關推薦
【網路】UDP伺服器的實現
UDP伺服器實現的基本步驟 (1)利用socket函式建立套接字 (2)伺服器用bind進行IP和埠號的繫結 (3)不需要設定監聽狀態 (4)繫結後直接讀寫 相關函式 recvfrom 作用 用來資料
Linux 下c語言ftp伺服器簡單實現
這個程式轉載自http://aijiekj.blog.163.com/blog/static/12986678920112321853230/ 原來的程式沒有註釋,最近這段時間在學習網路程式設計這塊,就在網上找了個程式來學習,第一次找的程式下載下來後,編譯沒通過,
[原創]直播伺服器簡單實現 http_flv和hls 內網直播桌面
注意:不支援xp系統,啟動失敗請先安裝dx11。win10的視訊流可能會是黑屏,需要選擇low api。直播都不陌生了,如今主流的協議分析的對比圖,個人見解。協議httpflvrtmphlsdash傳輸方式http流tcp流httphttp視訊封裝格式flvflv tagTs
3.網路程式設計-tcp的伺服器簡單實現
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/13 22:03 # @Author : ChenAdong # @email : [email protected] # 實現tcp伺服
直播伺服器簡單實現 http_flv和hls 內網直播桌面
直播都不陌生了,如今主流的協議分析的對比圖,個人見解。 協議 httpflv rtmp hls dash 傳輸層 http流 tcp流 http http 視訊格式 flv flv tag Ts檔案 Mp4 3gp
UDP伺服器的簡單實現
伺服器端: #include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include &l
實現簡單UDP伺服器客戶端模型
UDP是無連線的,在資料的傳送之前不需要連線,只需要知道要發資料給誰,然後將資料發出即可,可以直接接收到其他人發來的資料,不必呼叫listen()和accept()函式。所以UDP中建立好套接字後,就可以直接進行資料的傳輸。 基於UDP的接收和傳送函式: #includ
Linux C UDP Socket實現客戶與伺服器簡單通訊
在linux平臺下用c語言udp協議實現客戶與伺服器的簡單通訊與封裝的實現 一、伺服器端 1、新建CreateServer.c和CreateServer.h檔案,伺服器的建立程式碼在此實現,程式中封裝了建立TcpSocket和UdpSocket伺服器的方法,
python socket實現簡單的(TCP/UDP)伺服器/客戶端
1、建立TCP服務端 # -*- coding: utf-8 -*- from socket import * from time import ctime HOST = 'lo
【網路】實現簡單的TCP、UDP伺服器、TCP多程序/多執行緒伺服器
1.0 一個簡單的TCP伺服器(只服務一個客戶端) 先看程式碼如下: server.c #include<stdio.h> #include<stdlib.h> #include<string.h> #includ
極速搭建RTMP直播流伺服器+webapp (vue) 簡單實現直播效果
在嘗試使用webRTC實現webapp直播失敗後,轉移思路開始另外尋找可行的解決方案。在網頁上嘗試使用webRTC實現視訊的直播與看直播,在谷歌瀏覽器以及safari瀏覽器上測試是可行的。但是基於基座打包為webapp後不行,所以直播的話建議還是原生的好。HBuilder自帶的H5+有提供了原生
socket通訊:客戶端和伺服器的簡單實現
什麼是socket? socket最開始的含義是一個地址和埠對(ip, port)。Socket又稱"套接字",應用程式通常通過"套接字"向網路發出請求或者應答網路請求。 socket地址API:它唯一的表示了使用tcp通訊的一端,也可以將其理解成socket地址。 socket
Android中MQTT的簡單實現(只是連線到伺服器,未實現傳送、接受資訊)
1.新增mqtt包到gradle.build a.在project的gradle.build中新增地址(P:我下載的參考例子是不用新增的,但是我自己寫的時候不新增就編譯不過去) allprojects { repositories { google()
搭建linux伺服器叢集,簡單實現,負載均衡,動靜分離,資料主從複製,分散式快取,共享session回話。
負載均衡方案: nignx 應用層負載均衡 優點:配置簡單 缺點:均衡效能一般 有流量消耗 基於反向代理 LVS 網路層負載均衡 優點:配置複雜 缺點:作
使用jsp實現表單與伺服器簡單互動
<!DOCTYPE html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <
UDP網路程式設計簡單實現
由於最近編寫的遊戲涉及到了網路程式設計這塊,所以特意記錄下。 UDP簡介 UDP協議的全稱是使用者資料報,在網路中它與TCP協議一樣用於處理資料報。在OSI模型中,UDP位於第四層——傳輸層,處於IP協議額上一層。UDP有不提供資料報分組、組裝以及不能對資料報排序的缺點。當報文傳送之後,是無
網路程式設計之:TCP伺服器的簡單實現
說到TCP伺服器,就不得不提socket程式設計,我們知道,在TCP/IP協議中,“IP地址+TCP或UDP埠號”唯一標識⽹絡通訊中的唯一一個程序,“IP地址+埠號”就稱為socket。 在TCP協
公鑰和私鑰的含義,以及java客戶端和伺服器之間進行安全加解密的簡單實現
所謂公鑰和私鑰,一般是指在一個伺服器中,每個伺服器各自有自己的公鑰和私鑰,私鑰絕對保密,不可洩露,而公鑰會提供給可以被訪問的伺服器知曉。 如果serverA和serverB進行資料互動 那麼ServerA會知道B的公鑰 在傳送資料時 資料內容使用B的公鑰加密,傳送給B 數字
golang簡單實現一個基於TLS/SSL的 TCP伺服器和客戶端
本篇文章介紹一下使用TLS/SSL建立安全的TCP通訊,首先我們要準備一個數字證書和一個金鑰關於如何產生金鑰,請看下面文章: Author: 嶽東衛 Email: [email pro
C#網路程式設計系列文章(八)之UdpClient實現同步UDP伺服器
原創性宣告 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 轉載請註明出處 文章系列目錄 本文介紹 UdpClient 類在同步阻塞模式中為傳送和接收無連線的 U