Linux網路通訊 Socket(TCP實現)

2021-10-09 22:49:07 字數 2685 閱讀 4675

一、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...