
Всем доброго времени суток!
При попытке написать программу приема данных по протоколу TCP/IP, я столкнулся с некоторыми ошибками.
Суть задачи такова: я с другого компьютера, подключенного к моему по общей сети, должен принимать строку постоянно изменяющегося двоичного кода и выводить ее на экран до того момента, пока мне это необходимо.
Программа передачи данной строки написана на LabView, но роли это особой не играет.
В итоге, при попытке запустить программу, я всретил следующую ошибку:
"Необработанное исключение типа "System.AccessViolationException" произошло в Неизвестный модуль.
Дополнительные сведения: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена."
Но при этом окно вывода запускается. Также может вылезти ошибка о непредвиденном закрытии программы.
Насколько я понимаю, такая ошибка может появиться, если, например, вылезти за границы массива. Однако, я пока так и не понял, в чем причина в данной программе.
Если кто-нибудь может помочь, то пишите, пожалуйста. Буду весьма признателен.
Код, соответственно, прилагаю:
include "afxwin.h"
include "stdafx.h"
include <stdio.h>
include <windows.h>
define port 9090
using namespace System;
int main(void)
{
WSADATA wsd;
SOCKET server, client;
struct sockaddr_in addr;
char buf[1024];
if(WSAStartup (MAKEWORD(2,2), &wsd) != 0)
{
printf("WSAStartup error: %d\n", WSAGetLastError());
WSACleanup();
exit(1);
}
addr.sin_addr.s_addr = inet_addr("192.168.172.131");
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
server = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(server == INVALID_SOCKET)
{
printf("socket error: %d\n", WSAGetLastError());
exit(2);
}
if(bind(server, (struct sockaddr*)&addr, sizeof(addr)) == SOCKET_ERROR)
{
printf("bind socket error: %d\n", GetLastError());
WSACleanup();
exit(3);
}
listen(server,5);
printf("TCP Server is waiting for incoming data requets at port 9090\n");
for(;;)
{
client = accept(server, 0, 0);
if(client == INVALID_SOCKET)
{
printf("accept socket error: %d\n", WSAGetLastError());
WSACleanup();
exit(4);
}
int bRead = recv(client, buf, sizeof(buf), 0);
if(bRead > 0)
{
buf[bRead] = '\0';
printf("%s", buf);
}
closesocket(client);
}
closesocket(server);
WSACleanup();
}



