导航:首页 > 编程语言 > 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程序相关的资料

热点内容
怎么改合同网站 浏览:73
网络斗地主记牌器怎么实现的 浏览:377
ps镜像文件制作教程 浏览:45
系统分页文件大小设置多少 浏览:447
win10有线无法上网 浏览:339
wps无法访问指定文件 浏览:96
iphone4震动坏了 浏览:217
安卓随机数软件rand 浏览:356
CNC编程如何掌握公差 浏览:297
linux搭建php环境 浏览:514
星形网络怎么表示有故障 浏览:719
dbf文件c语言处理excel 浏览:138
金蝶kis支持win10吗 浏览:113
常州采集物联网大数据平台有哪些 浏览:950
win10休眠文件改到d盘 浏览:626
如何编程手机app软件 浏览:656
node获取文件名 浏览:367
iphoneios7怎么设置铃声 浏览:52
手机qq激活星钻 浏览:302
html中引入js文件路径 浏览:83

友情链接