導航:首頁 > IDC知識 > 客戶端連接多個伺服器

客戶端連接多個伺服器

發布時間:2020-12-04 19:54:40

1、socket怎麼使得多個客戶端連接到一個伺服器

你new多個客戶copy端就好了啊 以Java來舉例 //第一個客戶端Socket s = new Socket("192.168.1.100",10000);//第二個客戶端 Socket s2 = new Socket("192.168.1.100",10000);//第三個Socket s3 = new Socket("192.168.1.100",10000);//......以此類推new

2、一台客戶端可以與多台伺服器保持長連接嗎?

正常情況沒有限制,只要客戶端配置夠高。長時間連接,間隔一段時間自動斷開,可能是網路問題導致或者是本地網路設備問題。可以嘗試使用另一台作為終端來連接到伺服器端。

3、java中如何實現多個客戶端與伺服器連接

這個沒什麼問題吧,創建多個客戶端對象就行了,不知道你用的那種客戶端對象。
只是注意如果綁定IP地址和埠,那麼本地的IP地址和埠不能重復。
就是說多個客戶端要麼IP不同,要麼使用的埠不同。

4、遠程終端服務允許多個客戶端同時登錄伺服器,每個用戶間會影響嗎

Windows Server 2003默認復情況下允許遠程終端制連接的數量是2個用戶,我們可以根據需要適當增加遠程連接同時在線的用戶數。
單擊「開始→運行」,輸入「gpedit.msc」打開組策略編輯器窗口,依次定位到「計算機配置(computer configuration)→管理模板(administrative templates)→Windows 組件(windows components)→終端服務(terminal services)」,再雙擊右側的「限制連接數量(limit number of connections)」,再雙擊打開配置窗口(limit number of connections properties),選擇enabled 將其TS maximum connections allowed 允許的最大連接數設置成需要的數量即可。

5、同志,請問socket編程一個客戶端連接多個伺服器的問題你是怎麼解決的?

朋友是TCP協議的嗎?你這樣的情況可以把客戶端當做伺服器用啊;因為客戶端每連接一次伺服器;都要不同的IP和埠號;這樣理論上你伺服器多的話 就要啟動多個客戶端 也許代碼就那麼幾句

6、socket怎樣使得多個客戶端連接到一個伺服器

你new多個來客戶端就好了啊源

以Java來舉例

//第一個客戶端
Socket s = new Socket("192.168.1.100",10000);
//第二個客戶端 
Socket s2 = new Socket("192.168.1.100",10000);
//第三個
Socket s3 = new Socket("192.168.1.100",10000);
//......以此類推new

7、如何實現一個伺服器與多個客戶端連接

TCP協議:
伺服器端:tcp_server.c

[cpp] view plaincopyprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;//伺服器端套接字
int client_sockfd;//客戶端套接字
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向連接通信,TCP協議*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}

/*監聽連接請求--監聽隊列長度為5*/
listen(server_sockfd,5);

sin_size=sizeof(struct sockaddr_in);

/*等待客戶端連接請求到達*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server/n",21,0);//發送歡迎信息

/*接收客戶端的數據並將其發送給客戶端--recv返回接收到的位元組數,send返回發送的位元組數*/
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='/0';
printf("%s/n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;//伺服器端套接字
int client_sockfd;//客戶端套接字
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向連接通信,TCP協議*/
if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}

/*監聽連接請求--監聽隊列長度為5*/
listen(server_sockfd,5);

sin_size=sizeof(struct sockaddr_in);

/*等待客戶端連接請求到達*/
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("accept");
return 1;
}
printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));
len=send(client_sockfd,"Welcome to my server/n",21,0);//發送歡迎信息

/*接收客戶端的數據並將其發送給客戶端--recv返回接收到的位元組數,send返回發送的位元組數*/
while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))
{
buf[len]='/0';
printf("%s/n",buf);
if(send(client_sockfd,buf,len,0)<0)
{
perror("write");
return 1;
}
}
close(client_sockfd);
close(server_sockfd);
return 0;
}

TCP協議:

客戶端:tcp_client.c
[c-sharp] view plaincopyprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int client_sockfd;
int len;
struct sockaddr_in remote_addr; //伺服器端網路地址結構體
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&remote_addr,0,sizeof(remote_addr)); //數據初始化--清零
remote_addr.sin_family=AF_INET; //設置為IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//伺服器IP地址
remote_addr.sin_port=htons(8000); //伺服器埠號

/*創建客戶端套接字--IPv4協議,面向連接通信,TCP協議*/
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if(connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)
{
perror("connect");
return 1;
}
printf("connected to server/n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收伺服器端信息
buf[len]='/0';
printf("%s",buf); //列印伺服器端信息

/*循環的發送接收信息並列印接收信息--recv返回接收到的位元組數,send返回發送的位元組數*/
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='/0';
printf("received:%s/n",buf);
}
close(client_sockfd);//關閉套接字
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int client_sockfd;
int len;
struct sockaddr_in remote_addr; //伺服器端網路地址結構體
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&remote_addr,0,sizeof(remote_addr)); //數據初始化--清零
remote_addr.sin_family=AF_INET; //設置為IP通信
remote_addr.sin_addr.s_addr=inet_addr("127.0.0.1");//伺服器IP地址
remote_addr.sin_port=htons(8000); //伺服器埠號

/*創建客戶端套接字--IPv4協議,面向連接通信,TCP協議*/
if((client_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if(connect(client_sockfd,(struct sockaddr *)&remote_addr,sizeof(struct sockaddr))<0)
{
perror("connect");
return 1;
}
printf("connected to server/n");
len=recv(client_sockfd,buf,BUFSIZ,0);//接收伺服器端信息
buf[len]='/0';
printf("%s",buf); //列印伺服器端信息

/*循環的發送接收信息並列印接收信息--recv返回接收到的位元組數,send返回發送的位元組數*/
while(1)
{
printf("Enter string to send:");
scanf("%s",buf);
if(!strcmp(buf,"quit")
break;
len=send(client_sockfd,buf,strlen(buf),0);
len=recv(client_sockfd,buf,BUFSIZ,0);
buf[len]='/0';
printf("received:%s/n",buf);
}
close(client_sockfd);//關閉套接字
return 0;
}

UDP協議:
伺服器端:udp_server.c

[cpp] view plaincopyprint?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向無連接通信,UDP協議*/
if((server_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
sin_size=sizeof(struct sockaddr_in);
printf("waiting for a packet.../n");

/*接收客戶端的數據並將其發送給客戶端--recvfrom是無連接的*/
if((len=recvfrom(server_sockfd,buf,BUFSIZ,0,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("recvfrom");
return 1;
}
printf("received packet from %s:/n",inet_ntoa(remote_addr.sin_addr));
buf[len]='/0';
printf("contents: %s/n",buf);
close(server_sockfd);
return 0;
}
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int main(int argc, char *argv[])
{
int server_sockfd;
int len;
struct sockaddr_in my_addr; //伺服器網路地址結構體
struct sockaddr_in remote_addr; //客戶端網路地址結構體
int sin_size;
char buf[BUFSIZ]; //數據傳送的緩沖區
memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零
my_addr.sin_family=AF_INET; //設置為IP通信
my_addr.sin_addr.s_addr=INADDR_ANY;//伺服器IP地址--允許連接到所有本地地址上
my_addr.sin_port=htons(8000); //伺服器埠號

/*創建伺服器端套接字--IPv4協議,面向無連接通信,UDP協議*/
if((server_sockfd=socket(PF_INET,SOCK_DGRAM,0))<0)
{
perror("socket");
return 1;
}

/*將套接字綁定到伺服器的網路地址上*/
if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)
{
perror("bind");
return 1;
}
sin_size=sizeof(struct sockaddr_in);
printf("waiting for a packet.../n");

/*接收客戶端的數據並將其發送給客戶端--recvfrom是無連接的*/
if((len=recvfrom(server_sockfd,buf,BUFSIZ,0,(struct sockaddr *)&remote_addr,&sin_size))<0)
{
perror("recvfrom");
return 1;
}
printf("received packet from %s:/n",inet_ntoa(remote_addr.sin_addr));
buf[len]='/0';
printf("contents: %s/n",buf);
close(server_sockfd);
return 0;
}

8、C++一個客戶端與多個伺服器通信

客戶端之間的通訊有兩個辦法。
1. 伺服器中轉
2. 伺服器上注冊後,客戶端之間直接專通信。

對於第一種方屬法,大多比較簡單。查一下socket的文章,還有大把現成的代碼給你看。

第二個方法就稍微復雜一些。
但原理都一樣。客戶端A,鏈接伺服器後,地址信息就保存到了伺服器上。除了保持與伺服器的通信外。另外開啟一個 Socket,綁定到另一個埠,並且一直監聽此埠。
客戶端B連接伺服器,從伺服器上獲取客戶端A的地址信息。把客戶端A當成伺服器,連接A。

9、C++一個客戶端連接兩個伺服器

開2個線程,或用非阻塞方式。
建議多線程方式,每個線程創建套介面與其中一個伺服器連接,另外若多線程之間要通訊,要注意數據同步問題。

10、一個oracle資料庫客戶端怎麼設置連接多個oracle資料庫伺服器

\oracle\proct\10.2.0\db_1\NETWORK\ADMIN\tnsnames.ora中直接添加配置來完成,或者通過命令:開始--運行--cmd---netca,彈出的窗口中選擇本地net服務名配置,按照版提示配置就OK.方法權有很多種.

與客戶端連接多個伺服器相關的知識