Mi aplicación de programación de sockets en lenguaje C
En el pasado, generalmente nos comunicábamos con el PLC a través de 232, 485 para los programas de computadora host, 232 la comunicación estaba limitada por la distancia y 485 la distancia podía cumplir con los requisitos. a una mayor interferencia ambiental. Durante el proceso de transmisión La velocidad no es muy rápida. El nuevo tema se comunica con el PLC a través del puerto de red. Hemos utilizado el puerto de red como medio de transmisión para Siemens PLC. Solo necesita un cable de red para depurar el programa. Esta vez el tema es Uso del PLC de OMR como PLC de control. Escribiremos el programa de la computadora host (también conocido como software de configuración). Escribiremos una serie de cursos para compartir. Nuestro proceso de implementación con todos, y espero hacerlo rápidamente.
Hoy es un curso introductorio sobre el uso de sockets para implementar la programación de comunicación TCP/IP y realizar la interconexión de dos computadoras a través de IP.
Todavía hay muchos libros de texto de programación de sockets disponibles en línea y las ideas son básicamente las mismas. El programa se divide en dos partes: cliente y servidor.
La primera parte es el servidor.
1. Crear un socket de servidor (crear).
2. El socket del servidor realiza el enlace de información (bind) y comienza a escuchar las conexiones (escuchar).
3. Aceptar la solicitud de conexión del cliente (aceptar).
4. Iniciar la transmisión de datos (enviar/recibir).
5. Cerrar el enchufe (closesocket).
Código de envío y recepción de socket
1 SOCKET sockConn=accept(sockSrv,(SOCKADDR*)addrClient,len);
2 char sendBuf[50];
3 sprintf(sendBuf,"¡Bienvenido %s a aquí!",inet_ntoa(addrClient.sin_addr));
4 send(sockConn,sendBuf,strlen(sendBuf)+1, 0);
5 char recvBuf[50];
6 recv(sockConn,recvBuf,50,0);
7 printf("%s\ n",recvBuf);
8 closesocket(sockConn);
Parte 2 Cliente
1. Crear socket de usuario (crear).
2. Conéctese al servidor remoto. Si se acepta, cree un proceso de recepción.
3. Iniciar la transmisión de datos (enviar/recibir).
4. Cerrar el enchufe (closesocket).
Código de cliente
1 SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
2
3 SOCKADDR_IN addrSrv;< / p>
4 addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
5 addrSrv.sin_family=AF_INET;
6 addrSrv.sin_port= htons (6000);
7 conectar(sockClient,(SOCKADDR*)addrSrv,sizeof(SOCKADDR));
8 enviar(sockClient,"hola",strlen("hola") +1,0);
9 char recvBuf[50];
10 recv(sockClient,recvBuf,50,0);
11 printf( " %s\n",recvBuf);
El código del lado del servidor y el código principal del lado del cliente son básicamente los programas anteriores.
Hay varios puntos a considerar durante la aplicación procese Cambie según sus propias necesidades,
1.127.0.0.1 es la dirección IP del servidor, modifíquela según su propio segmento de IP
2. es el número de puerto de acuerdo con la configuración específica. Debe modificarse. Nuestro número de puerto de PLC es 9600, por lo que debemos modificarlo a 9600.
Muchos programas en Internet están escritos en VC6. Durante el proceso de referencia, encontró el siguiente error en el programa LICK
símbolo externo no resuelto __imp__closesocket@4
p>
Solución:
Esto se debe al hecho de que ws2_32.lib no se agrega a la biblioteca VC.
Solución 1: agregue #pragma comment(lib, "Ws2_32.lib") al código del programa
Solución 2: agregue módulos de objeto/biblioteca en proyecto\setting\link ws2_32. lib
Esta es la solución para VC6. Utilicé VS2008 para encontrarla.
Como se muestra en la imagen de arriba, configúrelo en VS2008, Propiedades del proyecto - Vinculador - Línea de comando - Adjunto. Agregue la opción ws2_32.lib y estará bien.
Después de pasar la compilación, el lado del servidor puede ver hola,
el lado del cliente puede ver ¡bienvenido 127.0.0.1 aquí!