Linux C程式設計 八 之 網路程式設計(下)

2021-09-22 05:42:08 字數 2038 閱讀 1230

這裡運用前兩篇的內容做出以下例項**

server:

#include#include#include#include#include#include #include/*列印**執行方式*/

static void usage(const char *proc)

void thread_run(void *arg)

memset(buf,'\0',sizeof(buf));

printf("please enter: ");

fflush(stdout);

ssize_t _s2 = read(0,buf,sizeof(buf) - 1);

if(_s2 > 0)

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

//1.建立socket

int sock = socket(af_inet,sock_stream,0);

if(sock < 0)

/*分配設定位址物件*/

struct sockaddr_in local;

local.sin_family = af_inet;

local.sin_port = htons(atoi(ar**[2]));

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

//將socket和位址繫結

if(bind(sock,(struct sockaddr*)&local,sizeof(local)) < 0)

//開啟對socket的監聽

if(listen(sock,10) < 0)

printf("bind and listen success!wait accept...\n");

//4.從監聽佇列裡阻塞獲取連線socket

struct sockaddr_in peer;

socklen_t len = sizeof(peer);

while(1)

printf("get connect,ip is : %s port is : %d\n",inet_ntoa(peer.sin_addr),ntohs(peer.sin_port));

pthread_t id;

pthread_create(&id,null,thread_run,(void*)fd);

pthread_detach(id);

}close(sock);

return 0;

}

client:

#include#include#include#include#include#include#include#includestatic void usage(const char *proc)

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

int sock = socket(af_inet,sock_stream,0);

if(sock < 0)

struct sockaddr_in remote;

remote.sin_family = af_inet;

remote.sin_port = htons(atoi(ar**[2]));

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

/*向伺服器發起連線*/

int ret = connect(sock,(struct sockaddr*)&remote,sizeof(remote));

if(ret < 0)

printf("connect success!\n");

char buf[1024];

while(1)

buf[_s -1] = '\0';

printf("%s\n",buf);}}

}close(sock);

return 0;

}

執行效果:

linux c程式設計 網路程式設計

在網路上,通訊服務都是採用 c s機制,也就是客戶端 伺服器端工作流程 使用socket 函式建立伺服器端通訊套介面 使用bind 函式將建立的套介面與伺服器位址繫結 使用listen 函式使伺服器套介面做好接收連線請求準備 使用accept 接收來自客戶端由connect 函式發出的連線請求 根據...

Linux C程式設計 六 之 網路程式設計 上

網路協議棧 網路基礎 tcp連線的三次握手和四次揮手 三次握手 tcp協議通過三個報文段完成連線的建立,這個過程稱為三次握手 three way handshake 過程如下圖所示。當客戶端呼叫connect時,觸發了連線請求,向伺服器傳送了syn j包,這時connect進入阻塞狀態 伺服器監聽到...

Linux C 網路程式設計教程

1 tcp 套接字通訊工作流程 一.面向連線的套接字socket通訊工作流程 為了實現伺服器與客戶機的通訊,伺服器和客戶機都必須建立套接字。伺服器與客戶機的工作原理可以用下面的過程來描述。1.伺服器先用 socket 函式來建立乙個套接字,用這個套接字完成通訊的監聽。2.用 bind 函式來繫結乙個...