Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
server.cpp
Package: server.rar [view]
Upload User: longrun888
Upload Date: 2022-06-19
Package Size: 1k
Code Size: 3k
Category:
TCP/IP Stack
Development Platform:
C/C++
- #include <iostream>
- #include <fstream>
- #include <errno.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- #include <netinet/in.h>
- #include <arpa/inet.h>
- #include <unistd.h>
- #include <strings.h>
- using namespace std;
- #define MAXLINE 4096
- #define LISTENQ 6
- #define SERV_PORT 9700
- static int line_read(int fd, char *ptr)
- {
- static int read_cnt = 0;
- static char *read_ptr;
- static char read_buf[MAXLINE];
- if (read_cnt <= 0) {
- again:
- if ( (read_cnt = read(fd, read_buf, sizeof(read_buf))) < 0) {
- if (errno == EINTR)
- goto again;
- return(-1);
- } else if (read_cnt == 0)
- return(0);
- read_ptr = read_buf;
- }
- read_cnt--;
- *ptr = *read_ptr++;
- return(1);
- }
- int readline(int fd, void *vptr, size_t maxlen)
- {
- int n, rc;
- char c, *ptr;
- ptr = (char *)vptr;
- for (n = 1; n < maxlen; n++) {
- if ( (rc = line_read(fd, &c)) == 1) {
- *ptr++ = c;
- if (c == 'n')
- break; /* newline is stored, like fgets() */
- } else if (rc == 0) {
- if (n == 1)
- return(0); /* EOF, no data read */
- else
- break; /* EOF, some data was read */
- } else
- return(-1); /* error, errno set by read() */
- }
- *ptr = 0; /* null terminate like fgets() */
- return(n);
- }
- int Readline(int fd, void *ptr, size_t maxlen)
- {
- ssize_t n;
- if ( (n = readline(fd, ptr, maxlen)) < 0){}
- // err_sys("readline error");
- return(n);
- }
- ssize_t /* Write "n" bytes to a descriptor. */
- writen(int fd, const void *vptr, size_t n)
- {
- size_t nleft;
- ssize_t nwritten;
- const char *ptr;
- ptr = (const char *)vptr;
- nleft = n;
- while (nleft > 0) {
- if ( (nwritten = write(fd, ptr, nleft)) <= 0) {
- if (errno == EINTR)
- nwritten = 0; /* and call write() again */
- else
- return(-1); /* error */
- }
- nleft -= nwritten;
- ptr += nwritten;
- }
- return(n);
- }
- /* end writen */
- void Writen(int fd, void *ptr, size_t nbytes){
- if (writen(fd, ptr, nbytes) != nbytes)
- cout << "writen error";
- }
- void outecho(int sockfd)
- {
- ssize_t p;
- char line[MAXLINE];
- char newline[2];
- if ( (p = Readline(sockfd, line, MAXLINE)) == 0)
- return; /* connection closed by other end */
- line[strlen(line)-1]='';
- cout << "Reiceving Input: '" << line << "' from Client";
- sprintf(line,"%s > temp.tmp",line);
- system(line);
- char fout[MAXLINE];
- ifstream file;
- file.open("temp.tmp");
- char ch;
- while(file.eof() == false){
- ch = file.get();
- if(ch == 'n')
- ch = 136;
- Writen(sockfd, &ch, 1);
- }
- cout << "nOutput Sent to Client---------n";
- file.clear();
- file.close();
- close(sockfd);
- }
- int main(int argc, char **argv)
- {
- int listenfd, connfd;
- pid_t childpid;
- socklen_t clilen;
- struct sockaddr_in cliaddr, servaddr;
- listenfd = socket(AF_INET, SOCK_STREAM, 0);
- bzero(&servaddr, sizeof(servaddr));
- servaddr.sin_family = AF_INET;
- servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
- servaddr.sin_port = htons(SERV_PORT);
- bind(listenfd, (const struct sockaddr *) &servaddr, sizeof(servaddr));
- listen(listenfd, LISTENQ);
- for ( ; ; ) {
- clilen = sizeof(cliaddr);
- connfd = accept(listenfd, (struct sockaddr *) &cliaddr, &clilen);
- if ( (childpid = fork()) == 0) { /* child process */
- close(listenfd); /* close listening socket */
- outecho(connfd); /* process the request */
- exit(0);
- }
- close(connfd); /* parent closes connected socket */
- }
- }