通常我們涉及到的網路程式設計,也稱為socket程式設計,多數是tcp和udp協議的程式設計,二者最大的區別就是:1. tcp是可靠的傳輸,需要三次握手建立連線再傳資料,而udp是無連線的,即使沒有接收方,也可以乙個勁往乙個位址發資料,所以說是不可靠的傳輸模式。 2. tcp是基於流模式的,udp是基於資料報模式的。因為udp比tcp稍微簡單一些,先介紹udp程式設計模式。
從程式設計的角度來說,udp socket程式設計主要有以下幾個函式。server端:socket()、bind()、recvfrom();client端:socket()、sendto()。當然c/s兩端都可以收發資料的。下面給出這幾個函式的函式原型,具體細節以後再在別的系列細說。
int socket(int domain, int type, int protocol);
int bind(int sockfd, struct sockaddr *myaddr, int addrlen);
int recvfrom(int sockfd, void *buffer, size_t size, int flags, struct sockaddr *from, size_t *addrlen);
int sendto(int sockfd, void *buffer, size_t size, int flags, struct sockaddr *to, size_t *addrlen);
文末給出最基本的udp socket c/s模式的示例**,把這些**裡的每乙個函式都理解透徹,也差不多學會了。
使用說明:
使用gcc編譯後,先執行server程式,後執行client程式。
server負責接收資料,預設使用埠6666,可以使用./server port
指定埠號。
client負責乙個勁往指定位址傳送一句話,預設使用本機ip和6666埠,可以使用./client ip port
或./client port
指定位址和埠。
udp server
#include
#include
#include
#include
#include
#include
#define buff_size 200
#define default_port 6666
int main(int argc, char *argv)
bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(server_port);
servaddr.sin_addr.s_addr = htonl(inaddr_any);
if(bind(servsocket,(struct sockaddr *)&servaddr,sizeof(servaddr)) < 0)
printf("listen port: %d\nlistening ...\n", server_port);
while(1)
printf("\nfrom %s:%d\n", inet_ntoa(cliaddr.sin_addr), ntohs(cliaddr.sin_port));
printf("recv: %s\nlength: %d\n\n", buffer, nbytes);
memset(buffer, 0, buff_size);
}}
udp client
#include
#include
#include
#include
#include
#include
#define default_ip "127.0.0.1"
#define default_port 6666
int main(int argc, char *argv)
else
if(argc == 2)
server_port = atoi(argv[1]);
struct sockaddr_in servaddr;
int clisocket;
char *sendbuf = "hello server, i am client.";
if((clisocket = socket(af_inet, sock_dgram, 0)) < 0)
servaddr.sin_family = af_inet;
servaddr.sin_port = htons(server_port);
// servaddr.sin_addr.s_addr = inet_addr(server_ip); //outdated method
inet_aton(server_ip, &servaddr.sin_addr);
printf("send data to %s:%d ...\n\n", server_ip, server_port);
while(1)
close(clisocket);
return
0;}
source code: /udpserver.c /udpclient.c /udpclient_inputsend.c UDP Socket程式設計示例
udp server 1 include 2 include 3 pragma comment lib,ws2 32.lib 45 void main 618 19 printf 伺服器開始建立socket。n 20struct sockaddr in local 21struct sockaddr...
EXT JS 6示例程式 Login示例程式
1.用sencha cmd生成應用程式模版 2.建立login view元件 資料夾下,有預設的 main 資料夾,這個資料夾包含了檔案main.js,maincontroller.js,和 mainmodel.js 資料夾下建立乙個資料夾 login 在 login 資料夾下,新建兩個檔案 log...
爬蟲示例程式
importrequests frombs4importbeautifulsoup try importxml.etree.celementtreeaset exceptimporterror importxml.etree.elementtreeaset base url response req...