聊天小專案之UDP通訊模組

2021-10-02 12:45:09 字數 2176 閱讀 7823

打算利用所學知識寫乙個基於udp的聊天小專案,大致分為幾個階段:

1、網路通訊模組封裝;

2、客戶端傳送訊息模組封裝;

3、服務端接受訊息模組封裝;

服務端**:

#include #include #include #include #include #include #include #include #define port 1234

#define maxdatasize 100

int main(void)

bzero(&server, sizeof(server));

server.sin_family = af_inet;

server.sin_port = htons(port);

server.sin_addr.s_addr = htonl(inaddr_any);

if(bind(sockfd, (struct sockaddr *)&server, sizeof(server)) == -1)

len = sizeof(client);

while(1)

buf[num] = '\0';

printf("you got a message <%s> from client. \nit's ip is %s, port is %d. \n", buf, inet_ntoa(client.sin_addr),htons(client.sin_port));

sendto(sockfd, "welcome\n", 8, 0, (struct sockaddr *)&client, len);

if ( !strcmp(buf, "bye") )

}close(sockfd);

return 0;

}

客戶端**:

#include #include #include #include #include #include #include #include #include #define port 1234

#define maxdatasize 100

int main(int argc, char *ar**)

if((sockfd=socket(af_inet, sock_dgram, 0)) == -1)

bzero(&server, sizeof(server));

server.sin_family = af_inet;

server.sin_port = htons(port);

server.sin_addr.s_addr = inet_addr(ar**[1]);

= inet_addr(ar**[1]);

if(connect(sockfd, (struct sockaddr *)&server, sizeof(server)) == -1)

send(sockfd, ar**[2], strlen(ar**[2]), 0);

while(1)

buf[num] = '\0';

printf("server message: %s.\n", buf);

break;

}close(sockfd);

return 0;

}

**分析:

sockaddr_in(在netinet/in.h中定義):

struct sockaddr_in

;

另一種結構:

struct sockaddr 

;

兩者之間的區別於聯絡:

用於儲存參與(ip)windows/linux套接字通訊的計算機上的乙個internet協議(ip)位址。為了統一位址結構的表示方法 ,統一介面函式,使得不同的位址結構可以被bind()、connect()、recvfrom()、sendto()等函式呼叫。但一般的程式設計中並不直接對此資料結構進行操作,而使用另乙個與之等價的資料結構sockaddr_in。這是由於microsoft tcp/ip套接字開發人員的工具箱僅支援internet位址字段,而實際填充欄位的每一部分則遵循sockaddr_in資料結構,兩者大小都是16位元組,所以二者之間可以進行切換。

bind(sockfd, (struct sockaddr *) &serv, sizeof(serv));繫結套接字

小專案之聊天系統步驟

一.建乙個客戶端的視窗 1,在類中寫乙個其他的方法,進而在主方法中呼叫它,物件導向的思想 二.新增textfield和textview用來顯示和傳送資訊 1,frame預設型別為borderlayout,繼承frame的類可以在裡面新增控制項,控制項的 位置可以設定,如 borderlayout.s...

UDP聊天器專案

由於udp通訊不是面向連線的,且雙方都可以利用套接字進行收發資訊 import socket def send msg udp socket dest ip input 請輸入你的ip dest port int input 請輸入你的埠 send data input 請輸入要傳送的資訊 將資訊傳...

聊天小專案之多客戶端聊天

需求分析 能支援對個使用者同時聊天,實現群聊功能 方法分析 採用多執行緒處理方式。不同的客戶端開啟不同的工作執行緒,共享同一程序的記憶體資訊。服務端 某一客戶端傳送的資訊給其他客戶端,實現資訊實時共享。服務端 server.c include include include include incl...