📄 client1.c
字号:
/* Client1.c for Windows Developers Journal by Victor R. Volkman
* this code may be used freely with no restrictions on use
*
* To build Win32 client cl client1.c scompat.c /Z7 /MT
* To build Unix client cc client1.c scompat.c -o client1
*/
#include <stdio.h>
#include "scompat.h"
/* try to tell linker where WinSock library is */
#if defined(_MSC_VER)
# pragma comment(lib,"wsock32.lib")
#elif defined(__BORLANDC__)
# pragma comment(lib,"mswsock.lib")
#endif
#define WSA_ERROR(x) { printf("Error %d: %s\n", \
WSAGetLastError(), x); return 1; }
void InitSockets(void);
main(int argc, char **argv)
{
SOCKET sd_client;
int err;
u_short iPort;
struct sockaddr_in addr_srv;
struct hostent *ptrHost;
char response[4096];
char *pszHost;
char *msg = "HELLO SERVER";
if (argc == 3) {
pszHost = argv[1];
iPort = atoi(argv[2]);
}
else {
printf("Usage:\t client1 [hostname] [portno]");
return 1;
}
InitSockets();
sd_client = socket(PF_INET, SOCK_STREAM, 0);
if (sd_client == INVALID_SOCKET)
WSA_ERROR("no more socket resources")
if (atoi(pszHost)) {
u_long ip_addr = inet_addr(pszHost);
ptrHost = gethostbyaddr((char *)&ip_addr,
sizeof(u_long), AF_INET);
}
else
ptrHost = gethostbyname(pszHost);
if (!ptrHost)
WSA_ERROR("cannot resolve hostname")
addr_srv.sin_family = PF_INET;
memcpy((char *) &(addr_srv.sin_addr),
ptrHost->h_addr, ptrHost->h_length);
addr_srv.sin_port = htons(iPort);
err = connect(sd_client, (struct sockaddr *) &addr_srv,
sizeof(addr_srv));
if (err == INVALID_SOCKET)
WSA_ERROR("cannot connect to server")
printf("You are connected to the server\n");
send (sd_client, msg, strlen(msg)+1, 0);
memset(response, 0, sizeof(response));
recv(sd_client, response, sizeof(response), 0);
printf("server says %s\n", response);
closesocket(sd_client);
WSACleanup();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -