SOCKET_ERROR = -1.
, "int closesocket (SOCKET s)", .
, "int WSACleanup (void)" WINSOCK . : ExitProcess .
2:
, Windows API. : TCP, UDP.
, :
1: ( . chat), .
2: .
3: TCP UDP, () . (.. , ).
4: . . .
DayTime:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define fatal(x) { perror(x); exit(1); }
main()
{
int s, c, sz;
struct sockaddr_in ssa, csa;
struct sockaddr *sp, *cp;
char *tstr, node[128], service[16];
time_t itime;
sp = (struct sockaddr *)&ssa;
cp = (struct sockaddr *)&csa;
/* */
s = socket(AF_INET, SOCK_STREAM, 0);
if (s == -1)
fatal(" ");
/* 13 */
ssa.sin_family = AF_INET;
ssa.sin_port = htons(13);
ssa.sin_addr.s_addr = INADDR_ANY;
if (bind(s, sp, sizeof(ssa)) == -1)
fatal(" ");
/*
*
*
*/
if (listen(s, 0) == -1)
fatal(" listen");
while (1) {
/* */
sz = sizeof(csa);
if ((c = accept(s, cp, &sz)) == -1)
fatal(" accept");
/* , */
itime = time(NULL);
tstr = ctime(&itime);
/* */
printf("%s\t ", tstr);
/* */
if (getnameinfo(cp, sz, node,
128, service, 16, 0) == 0)
printf("%s:%s\n", node, service);
else
printf("%s:%d\n", inet_ntoa(csa.sin_addr),
ntohs(csa.sin_port));
/* */
send(c, tstr, 25, 0);
/* */
close(c);
}
}