socket程式設計原理

2021-04-13 03:16:37 字數 2344 閱讀 5143

if ((newsock = accept(mysock.daemonsock, &addr, &len)) == -1) 

return(-1); /* accept error. */

/* set this socket as a non-blocking socket. */

ioctl(newsock, fionbio, &flag);

fd_set(newsock, &mysock.readfds);

fd_set(newsock, &mysock.writefds);

fd_set(newsock, &mysock.exceptfds);

/* return ip address in the parameter. */

ipaddr->s_addr = addr.sin_addr.s_addr;

i = 0;

while (mysock.sockets[i] != 0) i++; /* look for a blank sockets position */

if (i >= 64)

mysock.sockets[i] = newsock;

mysock.socknum++;

return(i);

}int closeconnection(int sockno)

/* close a connection indicated by sockno. */

int querysocket**sg()

/* query sockets message. if succeed return message number, else return -1.

the message information stored in struct sockmsg. */

for (i=0; i<64; i++) /* data out ready message */

if (fd_isset(mysock.daemonsock, &efds))

sockmsg.acceptnum = -1; /* server socket error. */

for (i=0; i<64; i++) /* error message */

return(retcode);

}int sendpacket(int sockno, void *buf, int len)

/* send a packet. if succeed return the number of send data, else return -1 */ 

int recvpacket(int sockno, void *buf, int size)

/* receive a packet. if succeed return the number of receive data, else  if the connection

is shutdown by peer then return 0, otherwise return 0-errno */ 

2.5.3 簡單伺服器程式示例

/* file name: server.c */

/* 這是乙個很簡單的重複伺服器程式,它初始化好被動套接字後,迴圈等待接收連線。如果接收到連線,它顯示資料套接字序號和客戶端的ip位址;如果資料套接字上有資料到來,它接收資料並顯示該連線的資料套接字序號和接收到的字串。*/

#include "tcpsock.h"

main(argc, argv)

int argc;

char **argv;

while (1)

else if (sockmsg.acceptnum == -1) /* 主套接字錯誤?*/

printf("daemon sockets error./n");

for (i=0; i< * 接收外來資料

} /* end while */

}2.5.4 簡單客戶程式示例

/* file name: client.c */

/* 客戶程式在執行時,先初始化資料結構,然後等待使用者輸入命令。它識別四個命令:

conn(ect): 和伺服器建立連線;

send: 給指定連線傳送資料;

clos(e): 關閉指定連線;

quit: 退出客戶程式。

*/#include "tcpsock.h"

main(argc, argv)

int argc;

char **argv;

while (1)

else if(!strncmp(cmd_buf, "send", 4))

else if (!strncmp(cmd_buf, "close", 4))

else if (!str

socket程式設計原理 三

程式在使用套接字前,首先必須擁有乙個套接字,系統呼叫socket 向應用程式提供建立套接字的手段,其呼叫格式如下 socket pascal far socket int af,int type,int protocol 該呼叫要接收三個引數 af type protocol。引數af指定通訊發生的...

socket程式設計原理(六)

closesocket sock exit 0 2.5 乙個通用的例項程式 在上一節中,我們介紹了乙個簡單的socket程式例項。從這個例子我們可以看出,使用socket程式設計幾乎有乙個模式,即所有的程式幾乎毫無例外地按相同的順序呼叫相同的函式。因此我們可以設想,設計乙個中間層,它向上提供幾個簡單...

Socket程式設計原理 1

兩種套接字 流套接字 sock stream tcp ip協議 資料報套接字 sock dgram udp ip協議 什麼是tcp ip udp?tcp ip transmission control protocol internet protocol 即傳輸控制協議 網間協議,是乙個工業標準的協...