社区
网络及通讯开发
帖子详情
我不用控件,怎么写文件上传的服务端?
Ywg78
2003-11-07 10:20:06
我不用控件,怎么写文件上传的服务端?(不用控件)C++ Builder
...全文
26
6
打赏
收藏
我不用控件,怎么写文件上传的服务端?
我不用控件,怎么写文件上传的服务端?(不用控件)C++ Builder
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
netsys2
2003-11-07
打赏
举报
回复
去看下面例子
examples\internet\chat
Ywg78
2003-11-07
打赏
举报
回复
不懂,能否详细点
netsys2
2003-11-07
打赏
举报
回复
客户端就用CLIENTSOCKET控件
Ywg78
2003-11-07
打赏
举报
回复
兄弟!那我客户端怎么调用他
netsys2
2003-11-07
打赏
举报
回复
//Unit2.h
//---------------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <winsock.h>
#define WSVERS MAKEWORD(1,0)
//---------------------------------------------------------------------------
class Tlisten : public TThread
{
private:
HANDLE m_hwnd;
long m_port;
protected:
void __fastcall Execute();
public:
__fastcall Tlisten(bool CreateSuspended);
void __fastcall Init(HANDLE hwnd,long lport);
SOCKET msock;
};
//---------------------------------------------------------------------------
#endif
Top
回复人: pp616(傻小子) ( ) 信誉:100 2003-03-31 13:54:00 得分:0
// Unit3.cpp 通讯线程代码
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit3.h"
#pragma package(smart_init)
__fastcall Ttransmit::Ttransmit(bool CreateSuspended)
: TThread(CreateSuspended)
{
this->Suspend();
this->FreeOnTerminate=true;
}
//---------------------------------------------------------------------------
void __fastcall Ttransmit::Init(SOCKET *socket,HANDLE hwnd,AnsiString CADD)
{
msock=*socket;
m_hwnd=hwnd;
ClientAddr=CADD;
this->Resume();
}
void __fastcall Ttransmit::Execute()
{
SendMessage(m_hwnd,WM_SOCKET,ACCEPTOK,long(ClientAddr.c_str()));
int cc=0;
while(!this->Terminated)
{
memset(xbbbuf,0x00,4096);
cc=recv(msock,xbbbuf,4096,0);
if(cc==SOCKET_ERROR || cc<=0)
{
//接收数据失败
memset(m_ErrMsg,0x00,50);
strcpy(m_ErrMsg,"断开连接");
SendMessage(m_hwnd,WM_SOCKET,RECVERR,(long)m_ErrMsg);
closesocket(msock);
this->Terminate();
}
//xbbbuf中是接收到的数据
//处理代码。。。。
//发送数据用以下代码
/*
long datalen;//数据长度
if(send(msock,xbbbuf,datalen,0)==SOCKET_ERROR)
{
memset(m_ErrMsg,0x00,50);
strcpy(m_ErrMsg,"发送通讯指令失败");
SendMessage(m_hwnd,WM_SOCKET,SENDERR,(long)m_ErrMsg);
closesocket(msock);
this->Terminate();
}
else
{
//发送成功
} */
}
}
//---------------------------------------------------------------------------
//Unit3.h
//---------------------------------------------------------------------------
#ifndef Unit3H
#define Unit3H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <winsock.h>
#define WSVERS MAKEWORD(1,0)
#define WM_SOCKET WM_USER + 1000
#define INITOK 1
#define INITERR 2
#define CREATEOK 3
#define CREATEERR 4
#define BINDOK 5
#define BINDERR 6
#define LISTENOK 7
#define LISTENERR 8
#define ACCEPTOK 9
#define ACCEPTERR 10
#define REMOTEQUEAST 11
#define SENDERR 12
#define RECVERR 13
#define WORKPOS 14
#define ACCEPTFINISH 15
#define THREADEND 16
#define FILESTART 17
//---------------------------------------------------------------------------
class Ttransmit : public TThread
{
private:
HANDLE m_hwnd;
AnsiString ClientAddr;
char xbbbuf[4096];
char m_ErrMsg[50]; //出错消息说明字符串指针
protected:
void __fastcall Execute();
public:
__fastcall Ttransmit(bool CreateSuspended);
void __fastcall Init(SOCKET *socket,HANDLE hwnd,AnsiString CADD);
SOCKET msock;
};
//---------------------------------------------------------------------------
#endif
netsys2
2003-11-07
打赏
举报
回复
用SOCKET API写!
主 题: 最近见问ServerSocket的哥们挺多的。我觉得ServerSocket不好。我一般用socket api写Server端。下面是一段示例代码。希望对正在写这方面的兄弟有用。
作 者: pp616 (傻小子)
等 级:
信 誉 值: 100
所属论坛: C++ Builder 网络编程/分布式开发
问题点数: 20
回复次数: 12
发表时间: 2003-03-31 13:51:33
//Unit1.cpp 窗体
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
Tlisten *tlisten;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(tlisten==NULL)
{
tlisten =new Tlisten(false);
tlisten->Init(Handle,atol(edit->Text.c_str()));
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if(tlisten)
{
tlisten->Terminate();
tlisten=NULL;
}
}
//---------------------------------------------------------------------------
//你需要自己写一个消息map来响应WM_SOCKET消息
//消息里的参数意思在unit3.h中有定义
//Unit1.h
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TEdit *edit;
TButton *Button1;
TListBox *ListBox1;
TLabel *Label1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
回复人: pp616(傻小子) ( ) 信誉:100 2003-03-31 13:53:00 得分:0
//Unit2.cpp 监听线程代码
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit2.h"
#include "Unit3.h"
#pragma package(smart_init)
Ttransmit *transmit;
__fastcall Tlisten::Tlisten(bool CreateSuspended)
: TThread(CreateSuspended)
{
this->Suspend();
this->FreeOnTerminate=true;
}
//---------------------------------------------------------------------------
void __fastcall Tlisten::Init(HANDLE hwnd,long lport)
{
m_hwnd=hwnd;
m_port=lport;
this->Resume();
}
void __fastcall Tlisten::Execute()
{
AnsiString Cadd;
struct sockaddr_in fsin,sin;
SOCKET ssock;
struct hostent *hostname;
int alen;
WSADATA wsadata;
if(WSAStartup(WSVERS,&wsadata)!=0)
{
//启动WinSock失败
SendMessage(m_hwnd,WM_SOCKET,INITERR,0);
return;
}
//启动WinSock成功
SendMessage(m_hwnd,WM_SOCKET,INITOK,0);
memset(&sin,0,sizeof(sin));
sin.sin_family=AF_INET;
sin.sin_addr.s_addr=inet_addr("");
sin.sin_port=htons(m_port);
msock=socket(PF_INET,SOCK_STREAM,0);
if(msock==INVALID_SOCKET)
{
//创建Socket失败
SendMessage(m_hwnd,WM_SOCKET,CREATEERR,0);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,CREATEOK,0);
if(bind(msock,(struct sockaddr*)&sin,sizeof(sin))==SOCKET_ERROR)
{
//帮定Socket失败
SendMessage(m_hwnd,WM_SOCKET,BINDERR,0);
closesocket(msock);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,BINDOK,0);
if(listen(msock,5)==SOCKET_ERROR)
{
//监听失败
SendMessage(m_hwnd,WM_SOCKET,LISTENERR,0);
closesocket(msock);
WSACleanup();
return;
}
SendMessage(m_hwnd,WM_SOCKET,LISTENOK,0);
while(!this->Terminated)
{
alen=sizeof(struct sockaddr);
ssock=accept(msock, (struct sockaddr *)&fsin, &alen);
if(ssock==INVALID_SOCKET)
{
//接受请求失败
SendMessage(m_hwnd,WM_SOCKET,ACCEPTERR,0);
closesocket(msock);
WSACleanup();
this->Terminate();
return;
}
//接受请求成功。启动新线程接管
Cadd=AnsiString(inet_ntoa(fsin.sin_addr));
transmit=new Ttransmit(false); //启动新的线程接管accept到的socket
transmit->Init(&ssock,m_hwnd,Cadd);
}
}
Flex 上传文件
控件
(带java
服务端
)
本项目提供了一个完整的Flex
文件上传
控件
,且集成了Java
服务端
处理,允许用户上传文件到服务器,并能进行多文件或单文件选择,以及设置上传文件大小限制,同时展示上传进度条,为用户提供友好的交互体验。...
vb6.0winsock
控件
2种方式发送大文件,包含
服务端
、客户端
本项目探讨了两种方法使用VB6.0的Winsock
控件
来发送大文件,包括
服务端
和客户端的实现。以下是这两种方法的详细说明。 ### 方法一:分块传输 **1. 分割文件** 当需要发送大文件时,可以将其分割成多个小块,然后...
C#服务器
控件
FileUpLoad实现单个
文件上传
到
服务端
通过浏览按钮,选择需要上传的文件,点击
控件
上传按钮而实现的上传
特经典的Silverlight多个大
文件上传
控件
及示例
《使用Silverlight实现高效大
文件上传
的
控件
与实践》 在现代Web应用中,用户经常需要上传大量的文件,特别是对于图像、视频等大文件,传统的单
文件上传
方式已无法满足需求。在这种背景下,"特经典的Silverlight多个...
网络文件传输(分
服务端
和客户端).zip_vb 文件传输_客户端
服务端
_文件传输_
服务端
_网络文件
服务端
是文件传输系统的核心组件,它接收客户端的
文件上传
请求,并保存这些文件到服务器的存储空间。
服务端
通常需要处理多个并发的客户端请求,确保文件的安全存储,并可能提供文件的检索和管理功能。在VB中,开发...
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章