⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 winsock.sca

📁 用WINSOCK做的数据传送程序,分客户端与服务器端,非常实用,与您共享
💻 SCA
字号:
SCCTEXT 版本 4.0.0.2
PLATFORM C(8,0),UNIQUEID C(10,0),TIMESTAMP N(10,0),CLASS M(4,0),CLASSLOC M(4,0),BASECLASS M(4,0),OBJNAME M(4,0),PARENT M(4,0),PROPERTIES M(4,0),PROTECTED M(4,0),METHODS M(4,0),OBJCODE M(4,0),OLE M(4,0),OLE2 M(4,0),RESERVED1 M(4,0),RESERVED2 M(4,0),RESERVED3 M(4,0),RESERVED4 M(4,0),RESERVED5 M(4,0),RESERVED6 M(4,0),RESERVED7 M(4,0),RESERVED8 M(4,0),USER M(4,0)
936

[ RECORD]
[PLATFORM] COMMENT 
[UNIQUEID] Screen    
[START RESERVED1]
VERSION =   3.00[END RESERVED1]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280MYBI0
[CLASS] dataenvironment
[BASECLASS] dataenvironment
[OBJNAME] Dataenvironment
[START PROPERTIES]
Left = 1
Top = 220
Width = 520
Height = 200
Name = "Dataenvironment"
[END PROPERTIES]
[START RESERVED2]
4[END RESERVED2]
[START RESERVED4]
1[END RESERVED4]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280N60Y9
[CLASS] cursor
[BASECLASS] cursor
[OBJNAME] Cursor2
[PARENT] Dataenvironment
[START PROPERTIES]
Left = 150
Top = 20
Width = 100
Height = 90
Alias = "sendmess"
Database = ..\message_data\gold_message.dbc
CursorSource = "sendmess"
Name = "Cursor2"
[END PROPERTIES]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280N7KU1
[CLASS] cursor
[BASECLASS] cursor
[OBJNAME] Cursor3
[PARENT] Dataenvironment
[START PROPERTIES]
Left = 288
Top = 13
Width = 100
Height = 90
Alias = "getmess"
Database = ..\message_data\gold_message.dbc
CursorSource = "getmess"
Name = "Cursor3"
[END PROPERTIES]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _02Q0ZNGPV
[CLASS] cursor
[BASECLASS] cursor
[OBJNAME] Cursor1
[PARENT] Dataenvironment
[START PROPERTIES]
Left = 10
Top = 20
Width = 100
Height = 90
Alias = "sock"
Database = ..\message_data\gold_message.dbc
CursorSource = "sock"
Name = "Cursor1"
[END PROPERTIES]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280MYBI1
[CLASS] app_form
[CLASSLOC] ..\..\gold_mis\libs\appuse.vcx
[BASECLASS] form
[OBJNAME] App_form1
[START PROPERTIES]
Height = 242
Width = 400
DoCreate = .T.
haveerror = 0
Name = "App_form1"
CMDRETURN1.Top = 205
CMDRETURN1.Left = 166
CMDRETURN1.Name = "CMDRETURN1"
STU_CAPTION1.FontSize = 30
STU_CAPTION1.Caption = "发送和接收消息"
STU_CAPTION1.Name = "STU_CAPTION1"
SHAPE1.Top = 169
SHAPE1.Left = 24
SHAPE1.Height = 5
SHAPE1.Width = 358
SHAPE1.Name = "SHAPE1"
SHAPE2.Top = 60
SHAPE2.Left = 21
SHAPE2.Height = 5
SHAPE2.Width = 358
SHAPE2.Name = "SHAPE2"
[END PROPERTIES]
[START METHODS]
PROCEDURE Refresh
release ccstring
ENDPROC
PROCEDURE Init
fhandle=FCREAT("GETMESS.TXT")&&生成并打开文件(返回值为数字型参数),执行此操作时将使文件变为空
IF fhandle<0                 &&文件不存在
	=MESSAGEBOX("系统错误,无法打开文件,请和程序设计人员联系",16,"系统信息")
ENDIF
=FCLOSE(fhandle)             &&关闭文件
SELE sock
ipaddres=ALLTRIM(ip)         &&读IP地址和端口号
rport=ALLTRIM(port)
THISFORM.sock.remotehost=ipaddres
THISFORM.sock.remoteport=rport
*!*	thisform.haveerror=0   &&数据交换出错标志

ENDPROC
PROCEDURE CMDRETURN1.Click
RESULT=MESSAGEBOX("您要返回吗?",4+32,"信息窗口") 
if result=6
  release thisform
endif
ENDPROC
[END METHODS]
[START RESERVED3]
haveerror 数据交换出错标志
[END RESERVED3]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280MYBIB
[CLASS] bas_cmdbutton
[CLASSLOC] ..\..\gold_mis\libs\baseclass.vcx
[BASECLASS] commandbutton
[OBJNAME] Bas_cmdbutton1
[PARENT] App_form1
[START PROPERTIES]
Top = 206
Left = 84
Caption = "开始连接"
Name = "Bas_cmdbutton1"
[END PROPERTIES]
[START METHODS]
PROCEDURE Click
***********************************建立连接***********************************
THISFORM.INFO.CAPTION="正在试图和服务器建立连接,请稍侯"
THISFORM.sock.OBJECT.CONNECT()    && 建立连接
THIS.ENABLED=.F.
THISFORM.CMDRETURN1.ENABLED=.F.
num=0
DO WHILE num<100000 AND THISFORM.sock.OBJECT.state!=7
	num=num+1
ENDDO
*****************************若连接成功,将数据按100条打包发送******************
IF THISFORM.sock.OBJECT.state=7    && 7为已连接
	THISFORM.INFO.CAPTION="已和服务器建立连接,正在向服务器发送数据"
	SELE sendmess
	COUNT TO ctotal
	ctotal=ctotal/100
	i=1
	DO WHILE i<ctotal
		GO (i-1)*100+1
		COPY TO sendmess.txt TYPE SDF  NEXT 100 FOR l_flag=.F.
		fhandle=FOPEN("SENDMESS.TXT",12)
		IF fhandle<0
			=MESSAGEBOX("系统错误,无法打开文件,请和程序设计人员联系",16,"系统信息")
		ENDIF
		nsize=FSEEK(fhandle,0,2)
		=FSEEK(fhandle,0,0)
		cstring=FREAD(fhandle,nsize)
		=FCLOSE(fhandle)
		THISFORM.sock.OBJECT.senddata(cstring)
		GO (i-1)*100+1
		i=i+1
	ENDD
	IF ctotal!=INT(ctotal)   && 记录条数不为100的整倍数
		GO (i-1)*100+1
		COPY TO sendmess.txt TYPE SDF REST FOR l_flag=.F.  && 将剩余部分复制成文本文件
		fhandle=FOPEN("SENDMESS.TXT",12)
		IF fhandle<0
			=MESSAGEBOX("系统错误,无法打开文件,请和程序设计人员联系",16,"系统信息")
		ENDIF
		nsize=FSEEK(fhandle,0,2)
		=FSEEK(fhandle,0,0)
		cstring=FREAD(fhandle,nsize)
		=FCLOSE(fhandle)
	ELSE
		cstring=""           && 记录条数是100的整倍数,将字符串设为空
	ENDIF
	csend=cstring+"?"+P_FENDH      &&在字符串中加入结束标志?和分店号
	THISFORM.sock.OBJECT.senddata(csend)  && 将数据发送给远程计算机。
	IF thisform.haveerror=0                  &&没有错误信息
		REPL ALL l_flag WITH .T.    &&设置传输成功标志
	ENDIF
ELSE
	THISFORM.INFO.CAPTION="  无法和服务器建立连接,请确认MODEM已打开"+CHR(13)+"并且中心服务器已打开"
	THISFORM.sock.OBJECT.CLOSE()    &&关闭TCP连接
	THIS.ENABLED=.T.
	THISFORM.CMDRETURN1.ENABLED=.T.
ENDIF

ENDPROC
[END METHODS]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _0280MYBIC
[CLASS] bas_label
[CLASSLOC] ..\..\gold_mis\libs\baseclass.vcx
[BASECLASS] label
[OBJNAME] INFO
[PARENT] App_form1
[START PROPERTIES]
AutoSize = .F.
BackStyle = 0
Caption = ""
Height = 43
Left = 33
Top = 74
Width = 339
Name = "INFO"
[END PROPERTIES]

[ RECORD]
[PLATFORM] WINDOWS 
[UNIQUEID] _02G186VLB
[CLASS] olecontrol
[BASECLASS] olecontrol
[OBJNAME] SOCK
[PARENT] App_form1
[START PROPERTIES]
Top = 91
Left = 173
Height = 100
Width = 100
Name = "SOCK"
[END PROPERTIES]
[START METHODS]
PROCEDURE Error
*** ActiveX 控件事件 ***
LPARAMETERS number, description, scode, source, helpfile, helpcontext, canceldisplay
thisform.haveerror=1
ENDPROC
PROCEDURE DataArrival
*** ActiveX 控件事件 ***取数据
LPARAMETERS bytestotal              &&可获取的数据总数量。
PUBLIC ccstring
THISFORM.INFO.CAPTION="正在从中心读回数据"
IF !FILE("GETMESS.TXT")
	fhandle=FCREAT("GETMESS.TXT")
ELSE
	fhandle=FOPEN("GETMESS.TXT",12)
ENDIF
IF fhandle<0
	=MESSAGEBOX("系统错误,无法打开文件,请和程序设计人员联系",16,"系统信息")
ENDIF
ccstring=""
THIS.OBJECT.GETDATA(@ccstring,17)   && 返回存储获取数据的地址
cend=""
cend=SUBSTR(ccstring,bytestotal,1)  && 取接收数的末位数,判断该数据是否为结束符
IF cend="?"
	cother=SUBSTR(ccstring,1,bytestotal-1) &&将结束符与分店号去掉,组成真正的数据信息
ELSE
	cother=ccstring
ENDIF
=FSEEK(fhandle,0,2)                 && 测定文件大小,在一个打开的文件中移动文件指针
=FWRITE(fhandle,cother)             && 写一个字符串到打开的文件中
=FCLOSE(fhandle)                    && 关闭文件
IF cend="?"
	SELE getmess
	APPE FROM getmess.txt TYPE SDF
	THISFORM.INFO.CAPTION="已接受完数据,请退出并断掉MODEM"+CHR(13)+"然后进行本地处理"
	THIS.OBJECT.CLOSE()             && 关闭连接
	THISFORM.CMDRETURN1.ENABLED=.T.
ENDIF


ENDPROC
[END METHODS]
[BINSTART OLE]
CHECKSUM=28408
[BINEND OLE]
[BINSTART OLE2]
CHECKSUM=13417
[BINEND OLE2]

[ RECORD]
[PLATFORM] COMMENT 
[UNIQUEID] RESERVED  
[START PROPERTIES]
隶书, 16, 12, 8, 18, 14, 16, 2, 2宋体, 1, 9, 7, 14, 10, 13, 2, 2[END PROPERTIES]
[EOF]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -