導航:首頁 > 編程語言 > tcpserver程序

tcpserver程序

發布時間:2023-03-06 02:46:35

⑴ 怎麼用VB實現遠程桌面並運行指定程序

請使用winsock 建立連接,然後遠程發送字元串 "your_path\your_exe_filename.exe", 另一端用 shell "your_path\your_exe_filename.exe" 即可執行。這個方法你要寫兩個軟體,一個在主機運行,另一個在伺服器端運行。以下是MSDN的內容

要創建一個 TCP 伺服器,請按照以下步驟執行:

創建新的 Standard EXE 工程。

將預設窗體的名稱改為 frmServer。

將窗體的標題改為「TCP 伺服器」。

在窗體中放入一個 Winsock 控制項,並將它的名字改為 tcpServer。

在窗體上添加兩個 TextBox 控制項。將第一個命名為 txtSendData,第二個為 txtOutput。

為窗體添加如下的代碼
Private Sub Form_Load()
'將 LocalPort 屬性設置為一個整數。
'然後調用 Listen 方法。
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show '顯示客戶端的窗體。
End Sub

Private Sub tcpServer_ConnectionRequest _
(ByVal requestID As Long)
'檢查控制項的 State 屬性是否為關閉的。
'如果不是,
'在接受新的連接之前先關閉此連接。
If tcpServer.State <> sckClosed Then _
tcpServer.Close
'接受具有 requestID 參數的
'連接。
tcpServer.Accept requestID
End Sub

Private Sub txtSendData_Change()
'名為 txtSendData 的 TextBox 控制項中
'包含了要發送的數據。當用戶往文本框中
'鍵入數據時,使用 SendData 方法
'發送輸入的字元串。
tcpServer.SendData txtSendData.Text
End Sub

Private Sub tcpServer_DataArrival _
(ByVal bytesTotal As Long)
'為進入的數據聲明一個變數。
'調用 GetData 方法,並將數據賦予名為 txtOutput
'的 TextBox 的 Text 屬性。
Dim strData As String
tcpServer.GetData strData
txtOutput.Text = strData
End Sub

上面的步驟創建了一個簡單的伺服器應用程序。為了使它能夠工作,還必須為它創建一個客戶端的應用程序。

要創建 TCP 客戶端,請按照以下步驟執行:

在工程中添加一個新的窗體,將其命名為 frmClient。

將窗體的標題改為「TCP Client」。

在窗體中添加一個 Winsock 控制項,並將其命名為 tcpClient。

在 frmClient 中添加兩個 TextBox 控制項。將第一個命名為 txtSend,第二個為 txtOutput。

在窗體上放一個 CommandButton 控制項,並將其命名為 cmdConnect。

將 CommandButton 控制項的標題改為 Connect。

在窗體中添加如下的代碼。
重點 必須將 RemoteHost 屬性值修改為您的計算機的名字。

Private Sub Form_Load()
'Winsock 控制項的名字為 tcpClient。
'注意:要指定遠程主機,可以使用
' IP 地址(例如:"121.111.1.1"),也可以使用
'計算機的「好聽的名字」如下所示。
tcpClient.RemoteHost = "RemoteComputerName"
tcpClient.RemotePort = 1001
End Sub

Private Sub cmdConnect_Click()
'調用 Connect 方法,初始化連接。
tcpClient.Connect
End Sub

Private Sub txtSendData_Change()
tcpClient.SendData txtSend.Text
End Sub

Private Sub tcpClient_DataArrival _
(ByVal bytesTotal As Long)
Dim strData As String
tcpClient.GetData strData
txtOutput.Text = strData
End Sub

⑵ C語言 寫一個tcp的server和client程序問題 麻煩幫我看看(急!!!)

第一個問題:(我當你是Unix系統了)
用pthread_create創建線程在第一個線程中sleep 5秒send消息,第二個sleep 3秒send消息,while循環,(CPU會自己切換時間片的,你試試就知道了)
第二個問題:
如果server掛了,客戶端消息發送函數send的返回值會為-1,你可以接受send的返回值,如果為-1,你可以等待幾秒後從新連接伺服器,再發送。
當然你想邏輯設計的很復雜就少不了條件變數與互斥了。

⑶ 急需一個VB的TCP通信程序!!

大哥,你也得說要求啊?
都需要什麼功能

要是只要能連上就行
伺服器端程序內
Private Sub Form_Load()
Winsock1.LocalPort = 600
Winsock1.Protocol = 0
Winsock1.Listen
End Sub

客戶容端程序
Private Sub Form_Load()
Winsock1.RemoteHost = "這里寫伺服器的IP地址"
Winsock1.RemotePort = 600
End Sub

先在伺服器上打開伺服器端程序
再用隨便一台電腦打開客戶端程序
兩台電腦就已經連上了
伺服器必須是公網的IP地址

⑷ 如何編寫一個高並發的tcp server

伺服器在調用listen和accept後,就會阻塞在accept函數上,accpet函數返回後循環調用accept函數等待客戶的TCP連接。如果這時候又大量的用戶並發發起connect連接,那麼在listen有隊列上限(最大可接受TCP的連接數)的情況下,有多少個connect會成功了。試驗證明,當連接數遠遠高於listen的可連接數上限時,客戶端的大部分TCP請求會被拋棄,只有當listen監聽隊列空閑或者放棄某個連接時,才可以接收新的連接,那麼我們應該如何來避免這種情況出現?

分析:
(一)客戶端
客戶端運行初期完成所設定的一定量的socket創建和相應的處理線程的創建,然後使用條件變數來完成線程同步,直到最後一個線程創建完成,才向所有線程發出廣播通知,讓所有線程並發調用connect,連接成功則關閉連接,失敗則返回,如下代碼所示。
socket創建和線程創建:
int testCount=300; //並發用戶數
/*
每個進程需要自己獨立的棧空間,linux下默認棧大小是10M,在32位的機子上一個進程需要4G的內存空間,去掉自己的棧空間全局程序段空間,一般只有3G內存可以用,創建線程時就需要從這3G的空間中分配10M出來,所以最多可以分配300個線程。當然這里還可以使用多個進程,每個進程300個線程的方式來進一步擴大並發量。
*/
int sockfd[testCount];
pthread_t ntid[testCount];

bzero(&servaddr,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(SERVER_PORT);
inet_pton(AF_INET,argv[1],&servaddr.sin_addr);

int testCaseIndex=0;
for(testCaseIndex=0;testCaseIndex<testCount;testCaseIndex++)
{
sockfd[testCaseIndex]=socket(AF_INET,SOCK_STREAM,0);
//為每個並發客戶端創建一個socket
if(sockfd[testCaseIndex]==-1)
{
printf("socket established error: %s\n",(char*)strerror(errno));
return -1;
}
if( pthread_create(&ntid[testCaseIndex],NULL,handleFun,&sockfd[testCaseIndex])!=0)
{
printf("create thread error :%s\n",strerror(errno));
return -1;
}
//為每個並發客戶端創建一個線程來執行connect
}

printf("%d client has initiated\n",testCaseIndex);

並發客戶端的線程實現:線程阻塞在條件變數上(只有條件滿足了並且發起喚醒動作,線程才開始執行)。
int sockfd=*((int*)arg);
{
pthread_cond_wait(&cond,&mut);
//在條件變數上等待條件滿足!
//阻塞返回後立即解鎖,防止互斥量加鎖帶來的阻塞
pthread_mutex_unlock(&mut);
int conRes=0;
conRes=connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr));
//線程執行connect連接,每個線程在接到喚醒信號後,才可以執行該語句,來模擬多個線程的並發調用。
if(conRes==-1)
{
printf("connect error: %s\n",strerror(errno));
return 0;
}
}

當條件滿足時,喚醒阻塞在條件變數上的線程:
while(1)
{
sleep(2);
pthread_cond_broadcast(&cond); //在所有線程創建完成後才進行喚醒。

閱讀全文

與tcpserver程序相關的資料

熱點內容
linuxtotalcommander 瀏覽:165
傳票翻打在電腦上下什麼app 瀏覽:39
db2查看資料庫字元集 瀏覽:449
小米私密文件移出後找不到 瀏覽:775
紅底白色的心是什麼app的標志 瀏覽:163
小冤家APP角色怎麼變回家長 瀏覽:822
夢幻西遊合寵模擬器網站是什麼 瀏覽:420
諾基亞930最新版本 瀏覽:201
ps製作主kv文件過大 瀏覽:884
車端面如何編程 瀏覽:279
win10u盤備份時間長 瀏覽:617
文件夾怎麼轉換為pdf 瀏覽:502
2008打開登錄密碼忘記了 瀏覽:771
蘋果7如何授權應用程序 瀏覽:899
怎樣把舊的文檔保存到桌面文件夾 瀏覽:827
wps雲數據如何恢復 瀏覽:496
微信發送過來文件 瀏覽:300
怎麼改合同網站 瀏覽:73
網路鬥地主記牌器怎麼實現的 瀏覽:377
ps鏡像文件製作教程 瀏覽:45

友情鏈接