linux下C C socket程式設計

2021-08-28 13:46:29 字數 4071 閱讀 6748

簡單的linux下socket程式設計,分別基於tcp和udp協議實現的簡單程式

linux下socket程式設計可以概括為以下幾個函式的運用:

流程

server**

#include#include#include#include#include

int main(int argc, char *argv)

/*將套接字繫結到伺服器的網路位址上*/

if(bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)

/*監聽連線請求--監聽佇列長度為5*/

if(listen(server_sockfd,5)<0)

;

sin_size=sizeof(struct sockaddr_in);

/*等待客戶端連線請求到達*/

if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)

printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));

len=send(client_sockfd,"welcome to my server/n",21,0);//傳送歡迎資訊

/*接收客戶端的資料並將其傳送給客戶端--recv返回接收到的位元組數,send返回傳送的位元組數*/

while((len=recv(client_sockfd,buf,bufsiz,0))>0))

}

/*關閉套接字*/

close(client_sockfd);

close(server_sockfd);

return 0;

}

client**

#include#include#include#include#include

int main(int argc, char *argv)

/*將套接字繫結到伺服器的網路位址上*/

if(connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)

printf("connected to server/n");

len=recv(client_sockfd,buf,bufsiz,0);//接收伺服器端資訊

buf[len]='/0';

printf("%s",buf); //列印伺服器端資訊

/*迴圈的傳送接收資訊並列印接收資訊(可以按需傳送)--recv返回接收到的位元組數,send返回傳送的位元組數*/

while(1)

/*關閉套接字*/

close(client_sockfd);

return 0;

}流程

/*將套接字繫結到伺服器的網路位址上*/

if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)

sin_size=sizeof(struct sockaddr_in);

printf("waiting for a packet.../n");

/*接收客戶端的資料並將其傳送給客戶端--recvfrom是無連線的*/

if((len=recvfrom(server_sockfd,buf,bufsiz,0,(struct sockaddr *)&remote_addr,&sin_size))<0)

printf("received packet from %s:/n",inet_ntoa(remote_addr.sin_addr));

buf[len]='/0';

printf("contents: %s/n",buf);

/*關閉套接字*/

close(server_sockfd);

return 0;

}

client**

#include#include#include#include#include

int main(int argc, char *argv)

strcpy(buf,"this is a test message"); // 傳送的內容

printf("sending: '%s'/n",buf);

sin_size=sizeof(struct sockaddr_in);

/*向伺服器傳送資料報*/

if((len=sendto(client_sockfd,buf,strlen(buf),0,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr)))<0)

/*關閉套接字*/

close(client_sockfd);

return 0;

}

在linux下用gcc執行即可

Linux實驗 Linux下的shell程式設計

某單位的系統管理員計畫用shell程式設計編寫乙個程式實現usb裝置的自動掛載。程式的功能如下 運算程式時,提示使用者輸入 y 或 n 確定是不是掛載usb裝置。如果使用者輸入 y 則掛載這個usb裝置。提示使用者輸入 y 或 n 確定是不是複製文字。如果使用者輸入 y 則顯示檔案列表,然後提示使用...

vmware下初編linux問題

今天在vmware下編譯linux2.4.18核心,出現了乙個問題 mkinitrd initrd 2.4.26.img 2.4.26的時候出現錯誤 no module buslogic found for kernel 2.4.26 原來是vmware預設用的是scsi做硬碟驅動,核心裡面沒有選,...

linux下ffmpeg及fdkaac編譯安裝

1.編譯fdkaac 目標機器上預設configure之後make會出現共享 相關的錯誤,需要加上編譯引數cflags fpic configure cflags fpic make make install 完成之後在 usr local lib 下會生成fdk aac.so.0庫檔案及幾個軟鏈 ...