Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 09.06.2018
Сообщений: 12

При передаче данных через тсп винсокет принимаются не корректно

09.06.2018, 15:14. Показов 1084. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я не давно начал программировать на visual basic 6.0. Еще много чего не знаю. Так что сильно не пинайте.
Делаю программу аттестации (тестирование),эта программа по завершении теста отправляет данные по tcp протоколу на сервер и вставляет их в Spreadsheet контрол в ячейки А2, B2, C2.
Вся суть вопроса в том что если все три переменные которые передаются на сервер числовые, то данные вставляются нормально,без искажений.А если данные строковые (либо первая строковая, а две остальные переменные числовые) то вставляются с искажениями, то есть вместо строки в ячейке появляется строка с каким то квадратиком, а в место цифр в двух других ячейках появляется ноль.
В чем может быть проблема?
Если на прямую вставлять в лист Spreadsheet данные по нажатии кнопки
то все данные, в любом порядке вставляются как надо. Значит я так думаю проблема появляется или при отправке с клиента или при получении на сервере?
Извините.
Код выложу вечером или завтра, так как нет его сейчас под рукой.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2018, 15:14
Ответы с готовыми решениями:

Проблемы при передаче данных через COM порт
Здравствуйте!!! При передаче / приеме данных через COM порт, возникла такая проблема: передаю например байт - 0xff, а при его приеме...

Утеря данных при передаче через TCP/IP ?!
Здравствуйте ! Может я криво искал, но не могу нигде найти ответ на свой вопрос, а самому - уже за 2-е недели сломал голову. :huh: ...

Проблема при передаче данных через RS232 - Wi-Fi
Устройство с интерфейсом RS232 подключено через Wi-Fi удлинитель WiBOX...

2
0 / 0 / 0
Регистрация: 09.06.2018
Сообщений: 12
09.06.2018, 22:12  [ТС]
Вот собственно код:
Сервера:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Private Sub Form_Load()
 
tcpServer.LocalPort = 1001
 
tcpServer.Listen
 
frmClient.Show
 
End Sub
 
 
 
 
 
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
 
If tcpServer.State <> sckClosed Then tcpServer.Close
 
tcpServer.Accept requestID
 
End Sub
 
 
 
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
 
Dim a As String
 
Dim b As Integer
 
Dim c As Integer
 
tcpServer.GetData a
 
tcpServer.GetData b
 
tcpServer.GetData c
 
Spreadsheet1.Cells(2, 1) = a
 
Spreadsheet1.Cells(2, 2) = b
 
Spreadsheet1.Cells(2, 3) = c
 
End Sub
Клиента:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Dim a As String
 
Dim b As Integer
 
Dim c As Integer
 
Private Sub Command1_Click()
 
tcpClient.SendData a
 
tcpClient.SendData b
 
tcpClient.SendData c
 
End Sub
 
 
 
Private Sub Form_Load()
 
a = "fjhdjkfh"
 
b = 1
 
c = 122
 
tcpClient.RemoteHost = "193.168.131.121"
 
tcpClient.RemotePort = 1001
 
End Sub
 
 
 
Private Sub cmdConnect_Click()
 
tcpClient.Connect
 
End Sub
Вот такая бяка получается в результате.
Если передавать переменные все integer и числа не большие, то все проходит гладко.
0
0 / 0 / 0
Регистрация: 09.06.2018
Сообщений: 12
11.06.2018, 00:48  [ТС]
Все, нашел выход из ситуации.
Передаю текстовые и числовые данные как единую строку с маркерами, а потом вырезаю то что нужно с этой строки уже на сервере.
Потом вставляю в лист ексель, все великолепно вставляется.
Можно автоматом вставлять а можно и ручками по кнопочке.
Это все пока тестовый вариант,поэтому все так убого.
вот код:
клиент
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Dim a As String
 
Private Sub Command1_Click()
'tcpClient.SendData a
End Sub
 
Private Sub Form_Load()
a = "Иванов Иван Иванович;1;п33|н7;п13|н7;п10|н10;п15|н5;п10|н10;"
tcpClient.RemoteHost = "192.168.131.65"
tcpClient.RemotePort = 1001
End Sub
 
Private Sub cmdConnect_Click()
tcpClient.Connect
Timer1.Enabled = True
End Sub
 
Private Sub Timer1_Timer()
tcpClient.SendData a
Timer1.Enabled = False
End Sub
сервер
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim i As String
Dim k As Integer
Private Sub Command1_Click()
'b = Trim$(Split(a, ";")(0))
'c = Trim$(Split(a, ";")(1))
'd = Trim$(Split(a, ";")(2))
'e = Trim$(Split(a, ";")(3))
'f = Trim$(Split(a, ";")(4))
'g = Trim$(Split(a, ";")(5))
'h = Trim$(Split(a, ";")(6))
'i = Trim$(Split(a, ";")(7))
'For k = 1 To 50
' If Spreadsheet1.Cells(k, 2) <> "" Then
' GoTo m1:
' Else: Spreadsheet1.Cells(k, 1) = b: Spreadsheet1.Cells(k, 2) = c: Spreadsheet1.Cells(k, 3) = d:
' Spreadsheet1.Cells(k, 4) = e: Spreadsheet1.Cells(k, 5) = f: Spreadsheet1.Cells(k, 6) = g:
' Spreadsheet1.Cells(k, 7) = h: Spreadsheet1.Cells(k, 8) = i: GoTo m2:
'm1:
' End If
'Next k
'm2:
End Sub
 
Private Sub Form_Load()
tcpServer.LocalPort = 1001
tcpServer.Listen
frmClient.Show
End Sub
Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)
If tcpServer.State <> sckClosed Then tcpServer.Close
tcpServer.Accept requestID
End Sub
 
Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
tcpServer.GetData a
Timer1.Enabled = True
End Sub
 
Private Sub Timer1_Timer()
b = Trim$(Split(a, ";")(0))
c = Trim$(Split(a, ";")(1))
d = Trim$(Split(a, ";")(2))
e = Trim$(Split(a, ";")(3))
f = Trim$(Split(a, ";")(4))
g = Trim$(Split(a, ";")(5))
h = Trim$(Split(a, ";")(6))
i = Trim$(Split(a, ";")(7))
For k = 1 To 50
If Spreadsheet1.Cells(k, 2) <> "" Then
GoTo m1:
Else: Spreadsheet1.Cells(k, 1) = b: Spreadsheet1.Cells(k, 2) = c: Spreadsheet1.Cells(k, 3) = d:
Spreadsheet1.Cells(k, 4) = e: Spreadsheet1.Cells(k, 5) = f: Spreadsheet1.Cells(k, 6) = g:
Spreadsheet1.Cells(k, 7) = h: Spreadsheet1.Cells(k, 8) = i: GoTo m2:
m1:
End If
Next k
m2:
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2018, 00:48
Помогаю со студенческими работами здесь

Запись данных в куки при передаче через AJAX
Здравствуйте, подскажите пожалуйста как правильно передать/записать инфу в куки через AJAX? Мой код function purchaseBasketItem(ev) { ...

Искажение данных при передаче через TCP соединение. Winsock
Здравствуйте, у меня клиент-сервер приложение, и при передаче относительно большого числа, возникает его искажение. Хотя при передаче...

Прерывание таймером при приёме и передаче данных через UART
Разрабатываю программу для RS485 на базе контроллера STM32F100xx. Ступор настал когда нужно входные и выходные данные прерывать по таймеру...

При передаче данных через AJAX не передаются некоторые поля формы
Я новичок, так что сильно не плюйтесь )) Возникла проблема при передаче данных формы обработчику AJAXом. Собственно, форма ...

Не корректно принимаются значения string
Доброго времени суток форумчане. Столкнулся с проблемой. Есть класс Apartment class Apartment { private: int num_room, floor; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru