linux下簡易socket程式設計

2021-07-05 05:44:43 字數 1596 閱讀 7998

最近研究了一下linux下的socket程式設計。這裡寫乙個簡易的版本上去。主要是分client和server兩個部分。

對於client比較簡單,這裡僅做乙個簡單的client。可以給自己的server傳送一條訊息並且可以得到一條伺服器返回的訊息,之後結束程序。

#include 

#include

#include

#include

#include

#include

#define maxnum 255 #define bindport 8000 int main(int argc, char** argv) memset(&saddr, 0, sizeof(saddr)); saddr.sin_family = af_inet; //代表用的ipv4協議 saddr.sin_port = htons(bindport); //用來獲取主機server的ip位址 if(inet_pton(af_inet, argv[1], &saddr.sin_addr) <= 0) if(connect(isocketfd, (struct sockaddr*) &saddr, sizeof(saddr)) < 0) //讀取一行作為傳送給server的資訊 fgets(csendmsg, maxnum, stdin); if(send(isocketfd, csendmsg, strlen(csendmsg), 0) < 0) if((irecvlen = recv(isocketfd, crecvmsg, maxnum, 0)) < 0) crecvmsg[irecvlen] = '\0'; //將收到的資訊末端新增\0以便輸出。 printf("received:%s", crecvmsg); close(isocketfd); return 0; }

對於server。中間採用了呼叫子程序來進行收發訊息的機制,這樣如果擴充套件可以用來併發的接待多位client.

#include 

#include

#include

#include

#include

#include

#include

#include

#define bindport 8000 int handlemsg(int iconnectfd); int main(int argc, char ** argv) memset(&saddr, 0, sizeof(saddr)); saddr.sin_family = af_inet; saddr.sin_addr.s_addr = htonl(inaddr_any); saddr.sin_port = htons(bindport); if(bind(isocketfd, (struct sockaddr*)&saddr, sizeof(saddr)) < 0) if(listen(isocketfd, 10) < 0) while(true) pid = fork(); if(pid < 0) else if(pid == 0) //呼叫子程序進行收發資訊 else if(pid > 0) } close(isocketfd); } int handlemsg(int iconnectfd) }

基本就是這樣。

Linux下Socket伺服器與客戶端程式設計

對於socket程式設計零基礎,同時也沒有在linux下程式設計的經驗,分享給和我一樣的朋友。伺服器接收客戶端多次傳過來訊息,同時返回給客戶端進行迴圈處理。伺服器得起乙個執行緒,處理客戶端傳過來的訊息,否則伺服器與客戶端只能通訊一次。客戶端 code include include include ...

linux下socket程式設計

一 什麼是socket socket可以看成是使用者程序與核心網路協議棧的程式設計介面。socket不僅可以用於本機的程序間通訊,還可以用於網路上不同主機的程序間通訊。socket api是一層抽象的網路程式設計介面,適用於各種底層網路協議,如ipv4 ipv6。struct sockaddr in...

linux下socket程式設計

作為乙個嵌入式開發者,在實際的研發專案中,常常需要編寫socket網路程式設計介面,提供給軟體開發人員。下面將提供乙個常用的 模板 客戶端的功能可以用微控制器多功能除錯助手進行驗證 include include include include include include include def...