赞
踩
- #include <stdlib.h>
- #include <stdio.h>
- #include <unistd.h>
- #include <string.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <netdb.h> /* netdb is necessary for struct hostent */
-
-
- #define PORT 4321 /* server port */
-
-
- #define MAXDATASIZE 100
-
-
- int main(int argc, char *argv[])
- {
- int sockfd, num; /* files descriptors */
- char buf[MAXDATASIZE]; /* buf will store received text */
- struct hostent *he; /* structure that will get information about remote host */
- struct sockaddr_in server;
-
- if (argc != 2)
- {
- printf("Usage: %s <IP Address>\n",argv[0]);
- exit(1);
- }
-
- if((he=gethostbyname(argv[1]))==NULL)
- {
- printf("gethostbyname() error\n");
- exit(1);
- }
-
- if((sockfd=socket(AF_INET,SOCK_STREAM, 0))==-1)
- {
- printf("socket() error\n");
- exit(1);
- }
- bzero(&server,sizeof(server));
- server.sin_family = AF_INET;
- server.sin_port = htons(PORT);
- server.sin_addr = *((struct in_addr *)he->h_addr);
- if(connect(sockfd, (struct sockaddr *)&server, sizeof(server))==-1)
- {
- printf("connect() error\n");
- exit(1);
- }
-
- char str[] = "horst\n"
-
-
- if((num=send(sockfd,str,sizeof(str),0))==-1){
- printf("send() error\n");
- exit(1);
- }
- if((num=recv(sockfd,buf,MAXDATASIZE,0))==-1)
- {
- printf("recv() error\n");
- exit(1);
- }
- buf[num-1]='\0';
- printf("server message: %s\n",buf);
- close(sockfd);
- return 0;
- }
- #include <sys/time.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
-
-
- #define PORT 4321
-
-
- #define BACKLOG 1
- #define MAXRECVLEN 1024
-
-
- int main(int argc, char *argv[])
- {
- char buf[MAXRECVLEN];
- int listenfd, connectfd; /* socket descriptors */
- struct sockaddr_in server; /* server's address information */
- struct sockaddr_in client; /* client's address information */
- socklen_t addrlen;
- /* Create TCP socket */
- if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
- {
- /* handle exception */
- perror("socket() error. Failed to initiate a socket");
- exit(1);
- }
-
- /* set socket option */
- int opt = SO_REUSEADDR;
- setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
-
-
- bzero(&server, sizeof(server));
-
-
- server.sin_family = AF_INET;
- server.sin_port = htons(PORT);
- server.sin_addr.s_addr = htonl(INADDR_ANY);
- if(bind(listenfd, (struct sockaddr *)&server, sizeof(server)) == -1)
- {
- /* handle exception */
- perror("Bind() error.");
- exit(1);
- }
-
- if(listen(listenfd, BACKLOG) == -1)
- {
- perror("listen() error. \n");
- exit(1);
- }
-
-
- addrlen = sizeof(client);
- while(1){
- if((connectfd=accept(listenfd,(struct sockaddr *)&client, &addrlen))==-1)
- {
- perror("accept() error. \n");
- exit(1);
- }
-
-
- struct timeval tv;
- gettimeofday(&tv, NULL);
- printf("You got a connection from client's ip %s, port %d at time %ld.%ld\n",inet_ntoa(client.sin_addr),htons(client.sin_port), tv.tv_sec,tv.tv_usec);
-
- int iret=-1;
- while(1)
- {
- iret = recv(connectfd, buf, MAXRECVLEN, 0);
- if(iret>0)
- {
- printf("%s\n", buf);
- }else
- {
- close(connectfd);
- break;
- }
- /* print client's ip and port */
- send(connectfd, buf, iret, 0); /* send to the client welcome message */
- }
- }
- close(listenfd); /* close listenfd */
- return 0;
- }
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。