前几天看到一个简单的基于socket的程序,特放上来!

原创 2004年06月28日 16:54:00

不过功能比较简单,后面在些基本上继续完善吧!

Server.c

/* 服务器程序 */

#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include

int main(int argc,char *argv[])
{
 int sockfd,new_fd;
 struct sockaddr_in server_addr;
 struct sockaddr_in client_addr;
 
 int sin_size,portnumber;
 char hello[]="Hello,Welcome to visited btlfe's Server.../n";
 
 if(argc!=2)
 {
  fprintf(stderr,"Usage:%s portnumber/a/n",argv[0]);
  exit(1);
 }
 
 if((portnumber=atoi(argv[1]))<0)
 {
  fprintf(stderr,"Usage:%s portnumber/a/n",argv[0]);
  exit(1);
 }
 
/* 服务器端开始建立socket描述符*/
 
 if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
 {
  fprintf(stderr,"Socket error:%s /n/a",strerror(errno));
  exit(1);
 }
 
 puts("This is a simple program to test socket connect!");
 sleep(1);
 puts("Written by btlfe of 6.21,2004");
 sleep(2);
 puts("Now server starting... please wait...");
 
/* 服务器端填充sockaddr结构*/

 bzero(&server_addr,sizeof(struct sockaddr_in));
 server_addr.sin_family=AF_INET;
 server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
 server_addr.sin_port=htons(portnumber);
 
/*捆绑sockfd描述符*/

 if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
 {
  fprintf(stderr,"Bind error:%s/n/a",strerror(errno));
  exit(1);
 }
 
/*监听sockfd描述符*/
 
 if(listen(sockfd,5)==-1)
 {
  fprintf(stderr,"Listen error:%s/n/a",strerror(errno));
  exit(1);
 }
 
/*服务器阻塞,直到客户程序建立连接*/

 while(1)
 {
  sin_size=sizeof(struct sockaddr_in);
  if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1)
  {
   fprintf(stderr,"Accept error:%s/n/a",strerror(errno));
   exit(1);
  }
  
  fprintf(stderr,"Server get connetion from %s/n",inet_ntoa(client_addr.sin_addr));
  
  if(write(new_fd,hello,strlen(hello))==-1)
  {
   fprintf(stderr,"Write Error:%s/n",strerror(errno));
   exit(1);
  }
  
  close(new_fd);
 }
 
 close(sockfd);
 exit(0);
}

 

client.c

/* 客房端程序*/

#include
#include
#include
#include
#include  
#include
#include
#include
#include


int main(int argc,char *argv[])
{
 int sockfd;
 char buffer[1024];
 struct sockaddr_in server_addr;
 struct hostent *host;
 int portnumber,nbytes;
 
 buffer[2]='/0';
 
 if(argc!=3)
 {
  fprintf(stderr,"Usage:%s hostname portnumber /a/n",argv[0]);
  exit(1);
 }
 
 if((host=gethostbyname(argv[1]))==NULL)
 {
  fprintf(stderr,"Gethostname error/n");
  exit(1);
 }
 
 if((portnumber=atoi(argv[2]))<0)
 {
  fprintf(stderr,"Usage:%s hostname portnumber /a/n",argv[0]);
  exit(1);
 }
 
/*客房端程序开始建立socket描述符*/

 puts("This is a simple program to test socket connect!");
 sleep(1);
 puts("Written by btlfe,6.21,2004");
 sleep(2);
 puts("Now connect to the server...");
 
 if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
 {
  fprintf(stderr,"Socket Error:%s/a/n",strerror(errno));
  exit(1);
 }

/*客户端程序填充服务器端资料*/
 
 bzero(&server_addr,sizeof(server_addr));
 server_addr.sin_family=AF_INET;
 server_addr.sin_port=htons(portnumber);
 server_addr.sin_addr=*((struct in_addr *)host->h_addr);
 
/*客户端程序发起连接请求! */

 if(connect(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
 {
  fprintf(stderr,"Connetc Error:%s/a/n",strerror(errno));
  exit(1);
 }
 
/*连接成功了*/
 
 if((nbytes=read(sockfd,buffer,1024))==-1)
 {
  fprintf(stderr,"Read Error:%s/n",buffer);
  exit(1);
 }
 
 buffer[nbytes]='/n';
 printf("I have received:%s/n",buffer);
 printf("%s",buffer);
 puts("End");
 close(sockfd);
 exit(1);
}

利用socket编写简单的web 服务器

 项目名称:编写简单的web 服务器主要目的:练习socket 编程、socket并发服务器可行性分析:时间 :2天;涉及知识:socket 编程、进程或线程的应用、web 服务器的服务形式需求分析:...
  • xiaozhi_su
  • xiaozhi_su
  • 2009年04月30日 18:26
  • 1786

非常简单的Socket聊天程序

新手一枚   不好别喷的太严重了 建立
  • a67474506
  • a67474506
  • 2014年07月15日 17:34
  • 2479

【简单Web服务器搭建】基于Socket实现的最简单的Web服务器【ASP.NET原理分析】

转自:http://www.cnblogs.com/DebugLZQ/archive/2011/12/06/2278234.html       通常,我们借助浏览器(通常是IE,FireFox或者...
  • xiaoxiaoyusheng2012
  • xiaoxiaoyusheng2012
  • 2015年08月30日 17:39
  • 860

3、一个简单的Windows下的socket程序

上节演示了 Linux 下的 socket 程序,这节来看一下 Windows 下的 socket 程序。同样,server.cpp 为服务器端代码,client 为客户端代码。 服务器端代码 se...
  • Const_Gong
  • Const_Gong
  • 2017年05月21日 13:50
  • 139

Java Socket实现的一个简易聊天室

Java Socket实现的一个简易聊天室 大体思路:用一个ServerSocket来接收所有Client的消息,然后转发给其他Client。在Server端,每个Client对应一个ServerHa...
  • u014285517
  • u014285517
  • 2015年07月20日 17:38
  • 794

JAVA使用Socket实现的简易HTTP服务器

非阻塞IO的方式解析浏览器请求,封装为请求报文类 import java.io.IOException; import java.io.InputStream; import java.util.Ar...
  • ColdCoding
  • ColdCoding
  • 2016年11月16日 22:25
  • 1299

详解基于java的Socket聊天程序——客户端(附demo)

这篇文章主要介绍了详解基于java的Socket聊天程序——客户端(附demo),客户端设计主要分成两个部分,分别是socket通讯模块设计和UI相关设计。有兴趣的可以了解一下。 写在前面:...
  • maguanghui_2012
  • maguanghui_2012
  • 2017年02月07日 14:05
  • 908

Socket编写一个简易的聊天室(相关知识点的总结)

Socket编译的简单聊天室的程序。
  • PSY_God
  • PSY_God
  • 2017年03月08日 18:56
  • 468

Java网络socket编程详解

或许有点长 但是一步步教你 我想你也愿意看 7.2 面向套接字编程     我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式 ...
  • zhangguoliang521
  • zhangguoliang521
  • 2015年10月28日 11:01
  • 959

一个简易的聊天程序(Socket)

效果图: 服务端Server代码: using System; using System.Collections.Generic; using System.ComponentMo...
  • duoduoluojia
  • duoduoluojia
  • 2015年05月02日 12:30
  • 1767
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:前几天看到一个简单的基于socket的程序,特放上来!
举报原因:
原因补充:

(最多只允许输入30个字)