- #include <stdio.h>
- #include ‹stdlib.h>
- #include <string.h>
- #include ‹winsock2.h>
- #define BUF SIZE 30
- void ErrorHandling (char *message);
7.
8. int main(int arg, char *argv [])
9.
{
10.
11.
12.
13.
14.
WSADATA waData;
SOCKET servsock;
char message [BUF_SIZE];
int strLen;
int clntAdrSz;
15.
16.
17.
18.
19.
SOCKADDR_IN servAdr, cIntAdr;
if(argc!=2) {
printf("Usage : % <port›\n", arg[0]);
exit (1);
20.
}
21
22.
if (WSAStartup (MAKEWORD(2, 2), &waData) |=0)
ErrorHandling("WSAStartup() error!");
23.
24.
25.
26.
servSock=socket (PF_INET, SOCK_DGRAM, 0);
if(servsock==INVALID_SOCKET)
ErrorHandling ("UDP socket creation error");
21 •
28.
29.
30.
31.
memset (&servAdr, 0, sizeof (servAdr)); servAdr.sin family=AF_ INET;
servAdr.sin_addr.s_addr=hton1(INADDR_ANY) ;
servAdr.sin_port=htons(atoi(argv [1]));
32.
33.
34.
if(bind(servSock, (SOCKADDR*)&servAdr, sizeof(servAdr))==SOCKET_ERROR)
ErrorHandling("bind() error");
35.
36.
37.
while(1)
{
38.
39.
40.
41.
42.
cintAdrSz=sizeof(cintAdr);
strLen=recvfrom(servSock, message, BUF_SIZE, 0,
(SOCKADDR*)&cIntAdr, &cintAdrSz);
sendto(servSock, message, strLen, 0,
(SOCKADDR*)&cIntAdr, sizeof(cintAdr));
43.
44.
45.
46.
}
closesocket (servsock);
WSACleanup (); return 0;
47. }
48.
50. {
51.
52.
53.
54. }
49. void ErrorHandling(char *message)
fputs (message, stderr);
fputc("In', stderr);
exit (1);
* echo client win.c
1.
2.
3.
4.
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <winsock2.h>
5.
- #define BUF SIZE 30
- void ErrorHandling(char *message);
8.
9. int main(int arg, char *argv[])
10. {
11.
12.
13.
14.
WADATA waData;
SOCKET sock;
char message [BUF_SIZE];
int strLen;
15.
16.
17.
18.
19.
SOCKADDR_IN servAdr;
if (argc!=3) {
printf("Usage : % <IP> ‹port›\n", arg[0]);
exit (1);
20.
}
21.
22.
if(WSAStartup (MAKEWORD(2, 2), &wsaData) |=0)
ErrorHandling("WSAStartup() error!");
23.
24.
25.
26.
sock=socket (PF_INET, SOCK_DGRAM, 0);
if(sock==INVALID SOCKET)
ErrorHandling("socket () error");
27.
28.
29.
30.
31.
32.
memset (&servAdr, 0, sizeof(servAdr)) ; servAdr.sin_family=AF_INET;
servAdr. sin_addr.s_addr=inet_addr (argv[1]); servAdr.sin_port=htons(atoi(argv [2]));
connect (sock, (SOCKADDR*)&servAdr, sizeof(servAdr));
33.
34.
35.
while(1)
{
36.
37.
38.
39.
fputs ("Insert message(q to quit): ", stdout); fgets (message, sizeof (message), stdin);
if(stremp(message, "q\n") I| !stremp(message, "Q\n"))
break;
40.
41.
send (sock, message, strlen (message), 0);
strLen=recv (sock, message, sizeof(message)-1, 0);
message strLene0;
printf ("Message from server: %", message);
45.
46.
47.
48.
}
closesocket (sock);
WSACleanup();
return 0;
49. }
50.
51. void Errorandling(char *message)
52. {
53.
54.
55.
puts (message, stderr);
fputc('\n', stderr);
exit (1);
56. }