基於tcp-伺服器
1.建立乙個socket,用函式socket()
2.繫結ip位址、埠等資訊到socket上,用函式bind()
3.設定允許的最大連線數,用函式listen()
4.接收客戶端上來的連線,用函式accept()
5.收發資料,用函式send()和recv(),或者read()和write()
6.關閉網路連線
#include #include /* see notes */
#include #include #include #include #define port 9998
void handl_client(int client_socket)
; while (1)
if (0 == ret)
buf[ret] = '\0';
printf ("收到客戶端資料:%s\n", buf);
int i;
for (i = 0; i < ret-1; i++)
write(client_socket, buf, ret);
} }int main(int argc, char **argv)
struct sockaddr_in addr;
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = af_inet; /* internet位址族 */
addr.sin_port = htons(port); /* 埠號 */
addr.sin_addr.s_addr = htonl(inaddr_any); /* ip位址, 繫結本地的所有ip位址*/
// 2、繫結本地的 ip 位址和埠
// 第乙個引數:需要繫結的套接字
// 第二個引數:是要繫結的ip和埠
// 第三個引數:第二個引數所佔的位元組數
int ret = bind(listen_socket, (const struct sockaddr *)&addr, sizeof(addr));
if(-1 == ret)
// 3、監聽套接字
ret = listen(listen_socket, 5);
if(-1 == ret)
printf ("等待客戶端連線.........\n");
// 4、處理客戶端的連線
// accept 是乙個阻塞型函式,如果沒有客戶端連線,會一直阻塞
// 第乙個引數:需要監聽的套接字
// 返回值:如果成功連線,返回乙個用於和客戶端通訊的套接字,不是之前的監聽套接字,注意區分
struct sockaddr_in client_addr;
socklen_t len = sizeof(client_addr);
int client_socket = accept(listen_socket, (struct sockaddr *)&client_addr, &len);
if (-1 == client_socket)
printf ("客戶端的 ip = %s, 埠 = %d\n", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port));
handl_client(client_socket);
return 0;
}
基於tcp-客戶端
1.建立乙個socket,用函式socket()
2.設定要連線的對方的ip位址和埠等屬性
3.連線伺服器,用函式connect()
4.收發資料,用函式send()和recv(),或者
read()和write()
5.關閉網路連線
#include #include /* see notes */
#include #include #include #include #include #include // 子執行緒負責寫資料
void *write_data(void *v) }
// 主線程負責讀資料
void read_data(int client_socket)
; while (1)
if (0 == ret)
buf[ret] = '\0';
printf ("%s\n", buf);
} }int main(int argc, char **argv)
// 2、連線伺服器
struct sockaddr_in addr;
memset(&addr, 0, sizeof(struct sockaddr_in));
addr.sin_family = af_inet; /* internet位址族 */
addr.sin_port = htons(atoi(argv[2])); /*伺服器用的埠號 */
addr.sin_addr.s_addr = inet_addr(argv[1]); /*伺服器用的ip位址 */
int ret = connect(conn_socket, (const struct sockaddr *)&addr, sizeof(addr));
if (-1 == ret)
pthread_t thread;
pthread_create(&thread, null, write_data, (void *)&conn_socket);
read_data(conn_socket);
close(conn_socket);
return 0;
}
python 建立TCP伺服器 客戶端程式
tcp伺服器程式 tstserv.py from socket import from time import ctime host port 21567 bufsiz 1024 addr host,port tcpsersock socket af inet,sock stream tcpsers...
TCP伺服器與客戶端的實現
在實現tcp伺服器之前,我們需要了解一下網路程式設計中基礎的幾個概念。套接字 要實現網路上兩台主機之間的資訊傳輸,就像茫茫人海中兩個人見面約會一樣。第一步是要幹什麼呢?當然是要認出對方才是你要找的人,不然認錯了人跟陌生人約會,那可就麻煩大了。對於我們人類來說,熟人可以通過相貌 穿著等判斷,而如果你要...
TCP伺服器 客戶端程式
server tcpserver.cpp檔案 include common initsock.h include cinitsock initsock 初始化winsock庫 int main 填充sockaddr in結構 sockaddr in sin sin.sin family af ine...