32
Direct printing by PORT9100
For Windows Console
The following program is a sample of printing "EPSON UB-E04" to a TM printer with the UB-E04 from the
Windows shell, through the Ethernet connection.
/* TCP9100 programming sample for win32
* HOW TO BUILD
* cl wtcp.cpp wsock32.lib
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winsock.h>
int main(int argc, char* argv[])
{
WSADATA data;
SOCKET sock;
struct linger Linger;
struct sockaddr_in addr;
char buf[64];
int n;
if (argc != 2) {
printf("usage: wtcp <IP_ADDRESS>\n");
exit(1);
}
/* Initialize windows socket */
WSAStartup(0x0101, &data);
/* Create socket */
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET) {
fprintf(stderr, "Error socket(): %d\n", WSAGetLastError());
exit(1);
}
/* Set connection timeout */
Linger.l_onoff = 1;
Linger.l_linger = 60;
setsockopt(sock, SOL_SOCKET, SO_LINGER, (char*)&Linger, sizeof(struct linger));
/* initialize the parameter */
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(9100);
addr.sin_addr.s_addr = inet_addr(argv[1]);
/* connect */
if (connect(sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
fprintf(stderr, "Error connect(): %d\n", WSAGetLastError());
exit(1);
}
printf("connected\n");
/* send data */
send(sock, "EPSON UB-E04\n", 13, 0);
/* gracefully close */
shutdown(sock, 1);
/* SD_SEND*/
while(1) {
n = recv(sock, buf, 64, 0);
if (n == SOCKET_ERROR || n == 0 ) {
break;
}
}
shutdown(sock, 2);
/*SD_BOTH*/
/* close socket */
closesocket(sock);
return 0;
}