Linux 下C 實現socket服務端和客戶端

2021-10-17 00:11:16 字數 2268 閱讀 9834

server.cpp

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

// 埠號

const

int port =

8080

;// socket緩衝佇列大小

const

int queue_size =20;

// 套接字描述符

int s;

void

handleconn

(int conn, sockaddr_in addr)

if(n ==0)

fprintf

(stdout

,"recv %d bytes: %s\n"

, n, buff);}

close

(conn);}

void

handlesign

(int sig)

intmain()

// 位址

sockaddr_in addr;

addr.sin_family = af_inet;

addr.sin_port =

htons

(port)

; addr.sin_addr.s_addr =

htonl

(inaddr_any)

;// 繫結位址if(

bind

(s,(sockaddr *

)&addr,

sizeof

(addr))==

-1)// 監聽位址if(

listen

(s, queue_size)==-

1)cout <<

"listen on "

<<

inet_ntoa

(addr.sin_addr)

<<

":"<< port << endl;

while

(true

)return0;

}

由於server.cpp中使用了pthread,所以編譯的時候應該指定引數如下

g++ server.cpp -lpthread
client.cpp

#include

#include

#include

#include

#include

using

namespace std;

const

int port =

8080

;int

main

(int argc,

char

*args)

if(argc >2)

// 建立乙個socket

int s =

socket

(af_inet, sock_stream,0)

;// 如果返回值為-1,則建立失敗

if(s ==-1

) sockaddr_in server_addr;

server_addr.sin_port =

htons

(port)

; server_addr.sin_family = af_inet;

server_addr.sin_addr.s_addr =

inet_addr

("127.0.0.1");

// 連線對應位址的socketif(

connect

(s,(sockaddr *

)&server_addr,

sizeof

(server_addr))==

-1)// 傳送資料if(

send

(s, args[1]

,3,0

)==-1

) cout <<

"send msg "

<< args[1]

<<

" successfully"

<< endl;

// 關閉socket

close

(s);

return0;

}

linux下實現組播(socket)

組播提供了在網路中進行一對多的傳送的機制,組播可以是在乙個網段內,也可以是跨網段的,不過跨網段需要交換機 路由器等網路裝置支援組播。hosts可以在任何時間加入或者離開組播組,對於組播組的成員沒有所處位置的限制,也沒有數量的限制,d類網際網路位址是用於組播的 224.0.0.0 239.255.25...

Linux下C語言Socket程式設計

socket用中國話將叫做 套接字 是用來進行網路資料傳輸的一種約定或者說是一種.我們通常說的tcp協議和udp協議都是通過socket來進行連線.每一台連線到網際網路的裝置都會有乙個ip位址,ip位址就像乙個 號碼或者說家庭住址,通過ip才可以唯一地定位到我們要進行網路通訊的網路裝置 乙個裝置一般...

Linux下C語言Socket網路程式設計

這裡打算寫乙個在linux系統下執行的socket服務端,然後在win下使用網路助手與其連線,達到資料回顯的功能。廢話不多說了,咱們現在開始。建立socket。將建立socket時返回的套接字描述符與伺服器ip位址和埠進行繫結。開始監聽連線到該伺服器的客戶端。當有客戶端請求與該服務端程式進行連線時,...