Can anyone have examples of the finished server and customer communicating via TCP / IP
? It is desirable to with
. If there is, you can and under unix
, and under Windows
.
Answer 1, Authority 100%
For Unix
(embroidered from Ineta):
Server.
# include & lt; stdio.h & gt;
#Include & lt; stdlib.h & gt;
#Include & lt; String.h & gt;
#Include & lt; unistd.h & gt;
#Include & lt; sys / Types.h & gt;
#Include & lt; sys / socket.h & gt;
#Include & lt; netinet / in.h & gt;
Void Error (Const Char * MSG)
{
PERROR (MSG);
EXIT (1);
}
Int Main (int argc, char * argv [])
{
int sockfd, newsockfd, portno;
SOCKLEN_T CLILEN;
Char Buffer [256];
STRUCT SOCADDR_IN SERV_ADDR, CLI_ADDR;
int n;
if (argc & lt; 2) {
FPRINTF (STDERR, "ERROR, NO Port Provided \ N");
EXIT (1);
}
SOCKFD = Socket (AF_INET, SOCK_STREAM, 0);
if (Sockfd & lt; 0)
ERROR ("Error Opening Socket");
Bzero ((char *) & amp; serv_addr, sizeof (serv_addr));
portno = ATOI (ARGV [1]);
serv_addr.sin_family = af_inet;
serv_addr.sin_addr.s_addr = inaddr_any;
SERV_ADDR.SIN_PORT = HTNS (Portno);
If (Bindddr *) & Amp; SERV_ADDR,
SizeOF (SERV_ADDR)) & lt; 0)
error ("Error On Binding");
Listen (SOCKFD, 5);
CLILEN = SIZEOF (CLI_ADDR);
newsockfd = accept (sockfd,
(struct SOCKADDR *) & amp; CLI_ADDR,
& amp; clip);
if (newsockfd & lt; 0)
ERROR ("Error on Accept");
BZERO (Buffer, 256);
n = read (newsockfd, buffer, 255);
if (N & LT; 0) Error ("Error Reading From Socket");
PRINTF ("HERE IS THE MESSAGE:% S \ N", Buffer);
n = write (Newsockfd, "I GOT Your Message", 18);
if (N & LT; 0) Error ("Error Writing to Socket");
Close (Newsockfd);
Close (Sockfd);
Return 0;
}
client.
# include & lt; stdio.h & gt;
#Include & lt; stdlib.h & gt;
#Include & lt; unistd.h & gt;
#Include & lt; String.h & gt;
#Include & lt; sys / Types.h & gt;
#Include & lt; sys / socket.h & gt;
#Include & lt; netinet / in.h & gt;
#Include & lt; netdb.h & gt;
Void Error (Const Char * MSG)
{
PERROR (MSG);
EXIT (0);
}
Int Main (int argc, char * argv [])
{
INT SOCKFD, PORTNO, N;
STRUCT SOCKADDR_IN SERV_ADDR;
STRUCT HOSTENT * SERVER;
Char Buffer [256];
if (argc & lt; 3) {
FPRINTF (STDERR, "Usage% s HostName Port \ n", argv [0]);
EXIT (0);
}
portno = ATOI (ARGV [2]);
SOCKFD = Socket (AF_INET, SOCK_STREAM, 0);
if (Sockfd & lt; 0)
ERROR ("Error Opening Socket");
Server = GetHostByname (ARGV [1]);
If (Server == NULL) {
FPRINTF (STDERR, "ERROR, NO SUCH HOST \ N");
EXIT (0);
}
Bzero ((char *) & amp; serv_addr, sizeof (serv_addr));
serv_addr.sin_family = af_inet;
BCOPY ((Char *) Server- & gt; h_addr,
(char *) & amp; serv_addr.sin_addr.s_addr,
Server- & gt; h_LENGTH);
SERV_ADDR.SIN_PORT = HTNS (Portno);
if (connectdr *) & amp; serv_addr, sizeof (serv_addr)) & lt; 0)
ERROR ("Error Connecting");
Printf ("Please Enter The Message:");
BZERO (Buffer, 256);
FGETS (Buffer, 255, Stdin);
N = Write (Sockfd, Buffer, Strlen (Buffer));
if (n & lt; 0)
ERROR ("Error Writing to Socket");
BZERO (Buffer, 256);
n = read (sockfd, buffer, 255);
if (n & lt; 0)
error ("Error Reading From Socket");
PrintF ("% s \ n", buffer);
Close (Sockfd);
Return 0;
}
Answer 2, Authority 33%
Alp – an excellent programming book on C. In details, an example of creating such applications is painted. The book is the truth is calculated on Linux programmers, but without a doubt Must Read those who decided to make deeper with, and from there there is something to learn.