簡單socket通訊示例

2021-07-10 04:10:12 字數 2832 閱讀 8116

int socket(int domain, int type, int protocol);

domain:位址族

- af_unix, af_local local communication unix域協議族

- af_inet ipv4 internet protocols

- af_inet6 ipv6 internet protocols

type: 指定建立的套接字的型別

- sock_stream //流式套接字

- sock_dgram //資料報套接字

- sock_raw //原始套接字:直接跳過傳輸層

protocol:指定乙個具體的協議,一般為0,不指定具體協議

返回值:成功返回套接字描述符, 失敗返回-1。

int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

struct sockaddr

//internet 協議位址結構

struct sockaddr_in

//ipv4位址結構

struct in_addr

int listen(int socket, int backlog)

socket: 要設定監聽的套接字

backlog:監聽佇列上最大的請求數(dos(拒絕服務)攻擊即利用了這個原理,非法的連線占用了全部的連線數,造成正常的連線請求被拒絕。)

返回值:成功返回0,失敗返回-1

int accept(int socket, struct sockaddr *addr,socklen_t *addrlen)

socket: 監聽套接字;

address:指標,用來儲存客戶端的網路位址;

addrlen:指標,用來儲存客戶端網路位址的長度;

note: 此處在呼叫時,addrlen裡面需要儲存addr指向的那個結構體的大小,

函式返回時,addrlen指向的變數,儲存客戶端位址的實際大小。

返回值:成功返回乙個連線套接字,失敗-1

int connect(int socket, struct sockaddr *serv_addr,int addrlen)

#include

#include

#include

#include

#include

#include

#include

int main(int argc,char *argv)

struct sockaddr_in my_addr;

bzero(&my_addr,sizeof(my_addr));

my_addr.sin_family = af_inet;

my_addr.sin_port = htons(6666);

my_addr.sin_addr.s_addr = inet_addr("192.168.1.222");

int res = bind(socket_fd,(struct sockaddr *)&my_addr,sizeof(my_addr));

if(res == -1)

res = listen(socket_fd,10);

if(res == -1)

struct sockaddr_in client_ip;

socklen_t len = sizeof(client_ip);

int fd = accept(socket_fd,(struct sockaddr *)&client_ip,&len);

if(fd == -1)

char *p = "hello word!";

write(fd,p,11); //開啟的是accept的返回值

char buf[20] = ;

read(fd,buf,20); //開啟的是accept的返回值

printf("%s\n",buf);

close(fd);

close(socket_fd);

return

0; }

#include

#include

#include

#include

#include

#include

#include

int main(int argc,char *argv)

struct sockaddr_in my_addr;

bzero(&my_addr,sizeof(my_addr));

my_addr.sin_family = af_inet;

my_addr.sin_port = htons(6666);

my_addr.sin_addr.s_addr = inet_addr("192.168.1.222");

int res = connect(socket_fd,(struct sockaddr *)&my_addr,sizeof(my_addr));

if(res == -1)

char buf[20] = ;

read(socket_fd,buf,20);

printf("%s\n",buf);

char *p = "hello word!";

write(socket_fd,p,11);

close(socket_fd);

return

0; }

Socket通訊示例

一 最簡例程實現socket網路傳輸 伺服器端 比客戶端先執行 vi socket server.c 1 include 2 include 3 include 4 include 5 include 6 include 7 include 8 include 9 include 10 includ...

簡單Socket通訊

示例程式是同步套接字程式,功能很簡單,只是客戶端發給伺服器一條資訊,伺服器向客戶端返回一條資訊 這裡只是乙個簡單的示例,是乙個最基本的socket程式設計流程,在接下來的文章中,會依次記錄套接字的同步和非同步,以及它們的區別。下面是示例程式的簡單步驟說明 伺服器端 第一步 用指定的埠號和伺服器的ip...

socket 簡單通訊

服務端 1.建立乙個服務端 import socket phone socket.socket 括號內不輸入,預設為family addressfamily.af inet type socketkind.sock stream proto 0 2.為服務端建立ip位址及埠號 phone.bind ...