1.伺服器端
#include
#include
#include
#include
#include
#include
#include
#include
#define port 8888
#define max_num_client 10
struct pthread_data
;void
*server_handle
(void
* arg)
;int client_fds[max_num_client]
;int
main()
//建立socket連線
sock_fd=
socket
(af_inet,sock_stream,0)
;if(sock_fd==-1
)else
//設定server位址結構
bzero
(&serv_addr,
sizeof
(serv_addr));
//初始化結構占用記憶體
serv_addr.sin_family=af_inet;
//設定傳輸層型別ipv4
serv_addr.sin_port=
htons
(port)
;//設定埠號
serv_addr.sin_addr.s_addr=
htons
(inaddr_any)
;//設定伺服器ip位址
bzero(&
(serv_addr.sin_zero),8
);//繫結埠if(
bind
(sock_fd,
(struct sockaddr*
)&serv_addr,
sizeof
(serv_addr))!=
0)else
//監聽埠if(
listen
(sock_fd,max_num_client!=0)
)else
//建立連線客戶端的對應套接字
len=
sizeof
(client_add)
;printf
("listening...\n");
while(1
)else
printf
("client_fds[%d] join in!\n"
,i);
num++;if
(num==max_num_client-1)
break;}
}}}close
(client_fd)
;close
(sock_fd)
;return0;
}//每個執行緒對應乙個客戶端
void
*server_handle
(void
*arg)
}//不斷接收客戶端資訊
while
((n=
recv
(client_fd, recvbuf,
sizeof
(recvbuf),0
))>0)
}for
(i=0
;i)break;}
//向所有客戶端傳送此客戶端發的資訊
sprintf
(sendbuf,
"client_fds[%d]:%s\n"
,num,recvbuf)
;for
(i=0
;i)memset
(recvbuf,0,
sizeof
(recvbuf));
}close
(client_fd)
;pthread_exit(0
);}
2.客戶端
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define ehco_port 8888
int sock_fd;
void
*client_handle
(void
*arg)
}int
main()
else
//設定server位址結構
bzero
(&serv_addr,
sizeof
(serv_addr));
//初始化結構占用記憶體
serv_addr.sin_family=af_inet;
//設定傳輸層型別ipv4
serv_addr.sin_port=
htons
(ehco_port)
;//設定埠號
serv_addr.sin_addr.s_addr=
inet_addr
("127.0.0.1");
//設定伺服器ip位址
bzero(&
(serv_addr.sin_zero),8
);//連線服務端if(
-1==connect
(sock_fd,
(struct sockaddr*
)&serv_addr,
sizeof
(serv_addr)))
printf
("success connect to server!\n");
pthread_create
(&thread,
null
, client_handle,
null);
//傳送並接收緩衝的資料
while
((n=
recv
(sock_fd,recv_buff,
1024,0
))>0)
memset
(recv_buff,0,
sizeof
(recv_buff));
}close
(sock_fd)
;return0;
}
有了這個可以在阿里雲伺服器搭個服務端,這樣就可以用不同的客戶端通過伺服器通訊。 socket多執行緒通訊
程序與執行緒的區別 程序 在作業系統構成單獨執行流的單位。執行緒 在程序構成單獨執行流的單位 執行緒的建立和執行流程 include int pthread create pthread t restrict thread,const pthread attr t restrict attr,voi...
乙個簡單的多執行緒socket
碼了2個小時多,終於弄完了。用的編輯器是qt creator 突然發現在qt creator上,也支援這些底層的c語言。在linux上除錯無誤。寫這個,也算是自己讀書的記錄吧!include include include include include include include includ...
多執行緒socket通訊client
控制台下實現多執行緒socket通訊,服務端為每個請求的客戶端建立乙個執行緒,進行通訊。其實這些msdn裡都有 一.基本流程如下 定義變數 獲得winsock版本 載入winsock庫 初始化 建立套接字 設定套接字選項 關閉套接字 解除安裝winsock庫 釋放資源 二.客戶端 建立過程 下篇是服...