乙個簡單的TCP套接字程式設計例項

2021-07-05 09:31:29 字數 2291 閱讀 6948

採用乙個伺服器程式對應乙個客戶的方法,伺服器不需要採取任何併發技術,執行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...