Страница: 1 |
Страница: 1 |
Вопрос: Winsock and file
Добавлено: 26.03.05 07:06
Автор вопроса: Карась
Дайте исходник передачи файлов через winsock. Только без всяких других компонентов DLL’ок.
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #1
Добавлено: 26.03.05 10:36
через винсок нет, есть через testsocket (он не внешний компонентЮ, компилится месте с прогой и ничего потом не требует, типа винсока или длл'ок):
http://dasharm.iatp.org.ua/index.php?action=download&nav=2
Номер ответа: 2
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #2
Добавлено: 27.03.05 23:25
дык в винде же вроде он уже есть?!
Номер ответа: 3
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #3
Добавлено: 28.03.05 22:18
а, точно, забыл...Он ведь есть так, как и.NET Framework...
нету его там, нету...
Номер ответа: 4
Автор ответа:
Карась
Вопросов: 6
Ответов: 10
Профиль | | #4
Добавлено: 29.03.05 05:41
Вот написал исходник передачи файлов по сети, но он у меня медленно каптирует файлы.
Может поможете мне разобраться почему медлено копирует.
Вот код:
CLIENT:
‘IP – TextBox
‘Port - TextBox
‘Command1 – это connect
‘Command2 - SendFile
‘Text2 – пут к файлу
‘WS – Winsock
--------begin cod client-----------------------
Dim PaketWait As Boolean
Dim t As String
Dim i As Long
Dim OK As Boolean
Private Sub Command2_Click()
Send_File
End Sub
Private Sub Form_Load()
PaketWait = False
IP.Text = ws.LocalIP
End Sub
Private Sub Command1_Click()
ws.Close
ws.RemoteHost = IP
ws.RemotePort = Port
ws.Connect
End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
ws.GetData Data
If Data = "+OK" Then OK = True
End Sub
Private Sub ws_SendComplete()
PaketWait = True
End Sub
Public Function Send_File() As Boolean
Send_File = False
Dim s As String
Dim l
Dim SF As String
l = FileLen(Text2.Text)
PaketWait = False
ws.SendData "FINFO" & l
Do While PaketWait = False
DoEvents
Loop
PaketWait = False
Open Text2.Text For Binary As #1
s = String(2048, vbNullChar)
 im tmp As String
 o Until EOF(1)
 oEvents ' Даже если это убрать тоже долго и висит пока не скопирует
PaketWait = False
Get #1, , s
ws.SendData s
Loop
Close #1
Send_File = True
End Function
-----------------------end client---------------------
SEVER
Command2 – Сохранит файл
Text2 – Куда сохранить
P – ProgressBar
-------------А вот код-----------------------------
Dim File As String
Dim FS
Dim FSize
Private Sub Command2_Click()
Open Text1.Text For Output As #1
Print #1, File
Close #1
File = ""
End Sub
Private Sub Form_Load()
Me.Show
WS.Close
WS.LocalPort = 100
WS.Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub ws_ConnectionRequest(ByVal requestID As Long)
WS.Close
WS.Accept requestID
End Sub
Private Sub ws_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
WS.GetData Data
If Mid(Data, 1, 5) = "FINFO" Then
FSize = Int(Mid(Data, 6, Len(Data)))
P.Max = FSize
Exit Sub
End If
FS = FS + Len(Data)
If FS >= FSize Then
P.Value = P.Max
MsgBox "FILE +OK"
Exit Sub
Else
P.Value = FS
End If
File = File + Data
End Sub
------------------все --------------------
Только не надо говорит что у меня всегда пакеты по 2048 байт, даже если надо отослать <2048 байт, просто я это потом сделаю.
Номер ответа: 5
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #5
Добавлено: 29.03.05 17:25
Карась, чем он лучше моего?
Номер ответа: 6
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #6
Добавлено: 29.03.05 21:58
Наверное лучше он тем, что он твоего не видел а сам попробовал дойти и понять.. Я тоже щас твои примерчики разные разбираю, DaSharm
Номер ответа: 7
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #7
Добавлено: 29.03.05 22:01
а...ну наверное...