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

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

09.06.2018, 15:14. Показов 1109. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru