一、socket概述
為了簡化開發通訊程式的工作,由berkely學校開發了一套網路通訊程式的api函式標準。
二、socket分類
#include
#include
/* see notes */
#include
#include
#include
#include
#include
#define port 9527
#define listen_backlog 20
//同時允許多少個客戶端跟server建立連線
using
namespace std;
intmain()
; socklen_t addrlen =
sizeof
(client_addr)
; server_socket_fd =
socket
(af_inet, sock_stream,0)
;//成功返回套接字描述符 失敗 -1
if(server_socket_fd <0)
int opt =1;
//開啟埠復用
setsockopt
(server_socket_fd, sol_socket, so_reuseaddr,
&opt,
sizeof
(opt));
//這行**解決埠復用
//bind 繫結
//準備結構體 ip繫結 埠繫結
struct sockaddr_in server_addr;
server_addr.sin_family = af_inet;
//ipv4協議族
server_addr.sin_port =
htons
(9527);
//埠server_addr.sin_addr.s_addr =
htonl
(inaddr_any)
;//inaddr_any系統幫我們找乙個可用的ip
bind_res =
bind
(server_socket_fd,
(const
struct sockaddr*
)&server_addr,
sizeof
(server_addr));
//listen
listen_res =
listen
(server_socket_fd, listen_backlog)
;//同時允許多少個客戶端跟server建立連線
if(listen_res <0)
//accept
cout <<
"connect wait ..."
<< endl;
accept_fd =
accept
(server_socket_fd,
(struct sockaddr*
)&client_addr,
&addrlen)
;//返回乙個新的套接字描述符
cout <<
"connect !!! ..."
<< endl;
while(1
)return0;
}
client端**如下:
#include
#include
/* see notes */
#include
#include
#include
#include
#include
#include
#define port 9527
#define ip "192.168.10.128"
using
namespace std;
intmain()
; client_socket_fd=
socket
(af_inet, sock_stream,0)
;//建立套接字
struct sockaddr_in client_addr;
client_addr.sin_family = af_inet;
client_addr.sin_port =
htons
(port)
; client_addr.sin_addr.s_addr =
inet_addr
(ip)
;connect
(client_socket_fd,
(const
struct sockaddr*
)&client_addr,socklen_t (
sizeof
(client_addr)))
;//發起連線
while
(fgets
(buffer,
sizeof
(buffer)
,stdin)!=
null
)return0;
}
測試效果:
Socket網路通訊
服務端的程式如下 1.建立乙個伺服器端socket,即serversocket,指定繫結的埠,並監聽此埠8888 serversocket serversocket new serversocket 8888 socket socket null 記錄客戶端的數量 int count 0 syste...
socket網路通訊
read write recv send readv writev recvmsg sendmsg recvfrom sendto include ssize t read int fd,void buf,size t count ssize t write int fd,const void bu...
linux下socket網路通訊詳解
telnet telnet是乙個用來遠端控制的程式,但是我們完全可以用這個程式來除錯我們的服務端程式的.比如我們的伺服器程式在監聽8888埠,我們可以用telnet localhost 8888來檢視服務端的狀況.int bind int sockfd,struct sockaddr my addr...