採用乙個伺服器程式對應乙個客戶的方法,伺服器不需要採取任何併發技術,執行tcp套接字服務端的基本過程是建立套接字,繫結套接字,監聽,接收請求,讀/寫資料和終止連線。
伺服器源程式:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 1234
//埠號
#define backlog 1
//所允許的連線數量
int main()
int opt=so_reuseaddr; //
允許本地位址被重用
setsockopt(socketfd, sol_socket, so_reuseaddr, &opt, sizeof(opt));
bzero(&server, sizeof(server)); //
初始化 server.sin_family=af_inet; //tcp
套接字 server.sin_port=htons(port); //
將埠轉換為網路字序
server.sin_addr.s_addr=htonl(inaddr_any); //
核心選擇
ip if(bind(socketfd, (struct
sockaddr *)&server,sizeof(server))==-1) //
將套接字繫結到指定的協議位址 if
(listen
(socketfd,
backlog
)==-
1) //監聽
(如果沒有請求,則被阻塞,進入休眠狀態)
socklen_tsin_size=
sizeof
(struct
sockaddr_in);
if ((connectfd=accept(socketfd, (struct
sockaddr *)&client,&sin_size))==-1) //
接收請求
printf
("you got a connection form %s\n",
inet_ntoa
(client.
sin_addr
)); send(connectfd, "hello\n", 6, 0); //
傳送資訊
close(connectfd);
close(socketfd);
return0;}
客戶端tcp套接字的基本過程:建立套接字,與伺服器程式連線,讀/寫資料和終止連線。
客戶端程式:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define port 1234
//定義埠號
#define maxdatasize 100
//定義緩衝區的大小
int main()
if ((socketfd=socket(af_inet, sock_stream, 0))==-1)
bzero(&server, sizeof(server));
server.sin_family=af_inet; //tcp
套接字型別
server.sin_port=htons(port); //
將埠轉換成網路字序
server.sin_addr=*((in_addr *)host->h_addr); //
伺服器位址
if (connect(socketfd, (struct
sockaddr*)&server, sizeof(struct
sockaddr))==-1) //
建立連線
if((numberbytes=recv(socketfd, buf, 100, 0))==-1) //
獲取訊息
buf[numberbytes]='\0';
printf
("server message:%s\n",buf);
close(socketfd); //
關閉連線
return0;}
先執行伺服器端,在執行客服端即可。
套接字程式設計 TCP例項
目錄 一 概述 這裡的例項主要參考 unix網路程式設計卷1 套接字聯網api 這裡記錄一下。主要是通過這裡的記錄,一直去把裡面的東西都coding和理解一遍。二 例項 服務端 include include include include include include include inclu...
基於tcp的套接字程式設計
伺服器端 1 author kelvin2 date 2019 1 28 22 10 3from socket import 4 server socket.socket af inet,sock stream 5 server.setsockopt sol socket,so reuseaddr,...
自己封裝的乙個 TCP 套接字基類
tcpsocket.h ifndef ctcpsocket h define ctcpsocket h include enum oper type enum send error type define buffer size 4096 class ctcpsocket oper type get...