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位址和埠進行繫結。開始監聽連線到該伺服器的客戶端。當有客戶端請求與該服務端程式進行連線時,...