1. 程式人生 > >udp程式設計套接字程式碼

udp程式設計套接字程式碼

server.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>


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

    if(argc!=3)
    {
        printf("Useage:[IP] [PORT]\n");
        return 1;
    }


    int sock=socket(AF_INET,SOCK_DGRAM,0);

    if(sock<0)
    {
        perror("socket");
        return 2;
    }

    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)
    {
        perror("bind");
        return 3;
    }

    char buf[8192];

    struct sockaddr_in client;
    while(1)
    {
        socklen_t len = sizeof(client);
        
        ssize_t s = recvfrom(sock ,buf,sizeof(buf)-1, 0, (struct sockaddr*)&client, &len);
       
        if(s>0)
        {
            buf[s]=0;
            printf("[%s:%d]: %s \n", inet_ntoa(client.sin_addr), ntohs(client.sin_port),buf); 

            sendto(sock,buf, strlen(buf), 0, (struct sockaddr*)&client, len);
        }
    }

    return 0;
}

client.c

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<arpa/inet.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>


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

    if(argc!=3)
    {
        printf("Useage:[IP] [PORT]\n");
        return 1;
    }


    int sock=socket(AF_INET,SOCK_DGRAM,0);

    if(sock<0)
    {
        perror("socket");
        return 2;
    }

    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[8196];
    struct sockaddr_in peer;
    socklen_t len = sizeof(peer);
     
    while(1)
    {
         printf("Please Enter Your words:");
         fflush(stdout);

        ssize_t s = read(0, buf, sizeof(buf)-1);
       
        if(s>0)
        {
            buf[s-1]=0;
           
            sendto(sock, buf, strlen(buf), 0, (struct sockaddr*)&server, sizeof(server));
        
            ssize_t _s = recvfrom(sock, buf, sizeof(buf)-1, 0, (struct sockaddr*)&peer, &len);
            
            if(_s>0)
            {
                buf[s-1]=0;
                printf("server echo:%s\n", buf);
            }

        }
    }

    return 0;
}

Makefile

.PHONY:all
all:server client

server:server.c
	gcc -o [email protected] $^

client:client.c
	gcc -o [email protected] $^

.PHONY:clean
clean:
	rm server client

相關推薦

udp程式設計程式碼

server.c #include<stdio.h> #include<stdlib.h> #include<string.h> #include<arpa/inet.h> #include<sys/types.h>

socket程式設計 程式設計 (純理論,以後補一下實現程式碼

基本概念   套接字——應用層和傳輸層之間,提供應用傳輸介面 Web/RPC/中介軟體——應用層之上的網路開發 應用程式設計介面API(application programming interface) 套接字介面(socket interface)簡稱套接字,

網路程式設計、網路位元組序及用udp寫客戶端和服務端聊天程式

認識IP地址 IP協議有兩個版本:IPV4和IPV6。 IPV4:IPV4版本的IP地址是4位元組無符號整數。那麼就存在IP地址資源匱乏的時候,這時可以採用兩種方法: DHCP:ip地址動態分配(應用層協議); NAT: 地址替換; 但是這兩種方法只是暫時的有I

我的Python成長之路--Day31-基於TCP和UDP程式設計

在介紹這兩種套接字程式設計之前,我們需要掌握iso七層協議中傳輸層中的和TCP有關的知識點, 三次握手和四次揮手: 首先傳輸層的由來: 網路層的ip幫我們區分子網,乙太網層的mac幫我們找到主機,然後大家使用的都是應用程式,你的電腦上可能同時開啟QQ、暴風影音等多個應用程

Linux網路程式設計 tcp程式碼

本次介紹一下TCP協議下的套接字程式碼,總體來看,tcp協議比udp協議更加安全可靠,無論是從使用者使用的角度還是從編寫程式碼的角度,你會發現與udp不同的是tcp在每次通訊前,伺服器端和客戶端都會進行一次連線,連線成功後,才可以進行相互間的通訊。 套接字

Linux__網路程式設計(UDP/TCP)

重點知識:          ·IP地址、埠號、網路位元組序的基本概念          ·socket api的基本用法          ·實現簡單的UDP客戶端/伺服器          ·實現簡單的TCP客戶端/伺服器(單鏈接版本,多程序版本,多執行緒版本)     

走入計算機的第三十四天(基於tcp和udp

recv 設置 內存 tcp list dup lis 不知道 狀態 一 TCP套接字 1 low版TCP套接字 服務器端                              客戶端        2、改進版tcp套接字           服務端   

python基於udp

enc client sock python 接受 upper imp 代碼例子 data 1.基於udp的套接字 (1)udp不會產生粘包現象 (2)udp是無鏈接的,先啟動哪一端都不會報錯。 (3)upd是無連接的,所以可以同時多個客戶端跟服務端通信。 2.代碼例子 服

網絡編程之基於UDP協議

本質 系統內存 現象 服務 自身 png 收發消息 accept color 1.UDP協議介紹(數據報協議)   UDP協議不同於TCP,通信時,它不需要事先建立雙向鏈接,並且不區分客戶端先啟動還是服務端前起,工作原理:基於udp協議傳輸的信息,協議會將數據自動加上自定義

python3全棧開發-補充UDP、操作系統、並發的理論基礎

共享 solaris 小時 如何實現 bfc 讀取數據 ram strong 網絡接口 一、基於UDP的套接字 udp套接字簡單示例 import socket ip_port=(‘1.1.1.1‘,8181) BUFSIZE=1024 udp_serve

python學習第34天之udp的多執行緒socketserver模組的使用、作業系統理論

一、udp的套接字 Udp協議又叫資料報協議, 特點:每次傳送資料自帶報頭,即使傳送為0也會自帶報頭,所以不會報錯;一端發一次資料。另一端也只能收一次資料 服務端: import socket server=socket.socket(socket.AF_INET,socket.SOCK_DG

socket程式設計 程式設計

基本概念 套接字——應用層和傳輸層之間,提供應用傳輸介面 Web/RPC/中介軟體——應用層之上的網路開發 應用程式設計介面API(application programming interface) 套接字介面(socket interface)簡稱套接字,

計算機網路——網路程式設計

IP協議有兩個版本,IPV4 和IPV6,但若每有特殊說明,預設都是指IPV4. IP地址是在IP協議中,用來標識網路中不同主機的地址。 我們光有IP地址就可以完成通訊了嘛?有了IP地址能夠把訊息傳送到對方的機器上,但還是需要有一個其他的標識來區分出,這個程式要給哪個程式進行解析。

網路程式設計(Socket)

網路預備知識學習:https://blog.csdn.net/hansionz/article/details/85224786 網路程式設計套接字 一.IP地址和埠號 1.IP地址 2.埠號 2.1 什麼是埠號

linux基礎程式設計 socket 完整的伺服器端多執行緒socket程式

此段程式來自我的一個專案中,稍微做了些修改,執行穩定,客戶端程式比較簡單所以未編寫,可以用socket除錯工具測試此段程式碼 費話不多說,直接上程式碼 #include<stdlib.h> #include<stdio.h> #include&

網路程式設計-(scoket)

socket程式設計  socket這個詞可以表示很多概念: 在TCP/IP協議中,“IP地址+TCP或UDP埠號”唯一標識網路通訊中的一個程序,“IP地址+埠號”就稱為socket。   在TCP協

網路程式設計

TCP套接字----------------------------------------------SERVER————————————————————————————-------------------------------------------------CLI

網路程式設計基礎 & 基本TCP程式設計-基本函式

套接字基礎 一個通用套接字地址結構sockaddr: struct sockaddr { unsigned short sa_family; //套接字的協議簇地址型別,AF_XX char sa_data[14];//儲存

網路程式設計【socket】

在學習Linux系統程式設計的時候,程序間的通訊方式包括——管道、訊息佇列、共享記憶體、訊號量等方式。但是這些通訊方式都村子一定的缺陷——都是在同一個機器上的程序間的通訊。為了讓不同機器上的程序之間相互通訊,Linux網路程式設計便可解決。linux系統支援套接字介面,可以通

【Java TCP/IP Socket程式設計】--------UDP Socket

目錄   簡介 UDP通訊 UDP通訊案例 UDP套接字注意點 簡介 UDP是面向無連線的協議,在資料傳輸時,資料的傳送端和接收端不建立邏輯上的連線。當一臺計算機向另外一臺計算機發送資料時,傳送端不會確認接收端是否存在,同樣接收端接收到資料時,也不會發送反饋