当前位置:  技术问答>linux和unix

一个简单的服务器 客户端代码 请高手看下 在线等

    来源: 互联网  发布时间:2016-03-13

    本文导语:  一个TCP的服务器和客户端代码 不知道怎么搞的 编译能通过 但是当Server端运行的时候 启动client端 两边都没有反应 都在等待中 然后如果停掉server端 client端才打印出plz enter msg: 这句 请高手帮忙看一下 到底错误...

一个TCP的服务器和客户端代码
不知道怎么搞的 编译能通过 但是当Server端运行的时候 启动client端 两边都没有反应 都在等待中
然后如果停掉server端 client端才打印出plz enter msg: 这句
请高手帮忙看一下 到底错误在那里 谢谢了
/* client 端 */
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define PORT 1234
#define MAXDATASIZE 100

int main(int argc,char* argv[])
{
        int sockfd;
        int num;
        char buffer[MAXDATASIZE];
        struct hostent *he;
        struct socket_in server;
        
        /*从命令行获取服务器端程序*/             
        /*struct hostent* gethostbyname(const char* hostname )*/   
        if (NULL==(he=gethostbyname(argv[1])))   
        //struct hostent 结构详见/usr/include/netdb.h
        {                                          
                */ 输出出错信息;*/
                printf("host error !");
                exit(1);
        
        }
        
        
        
        
        
        /*建立套接字*/
        
        if (-1==(sockfd=socket(AF_INET,SOCK_STREAM,0)))
        {
                */ 输出出错信息;*/
                printf("socket error !");
                exit(1);        
        }
        
        /*连接服务器*/
        bzero(&server,sizeof(struct sockaddr));
        server.sin_family=AF_INET;
        server.sin_port=htons(PORT);
        server.sin_addr.s_addr=*((struct in_addr*)he->h_addr);
        
        if (-1==connect(sockfd,(struct sockaddr*)server,sizeof(strcut sockaddr)))
        {
                
                */ 输出出错信息;*/
                printf("connent error !");
                close(sockfd);
                exit(1);        
        }
        
        if (-1==(num=recv(sockfd,buf,MAXDATASIZE,0)))
        {
                /* 报错;*/
                printf("receive error !");
                close(sockfd);
                exit(1);
                }
        printf("plz enter msg:");
        bzero(buffer,MAXDATASIZE);
        fgets(buffer,MAXDATASIZE,stdin);
        num=write(sockfd,buffer,MAXDATASIZE);
        bzero(buffer,MAXDATASIZE);
        num=read(sockfd,buffer,MAXDATASIZE);
        printf("server msg :%s",buffer);
        close(sockfd);        
}

/*TCP服务器端程序模板*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define PORT 1234
#define MAXDATASIZE 100
#define backlog 5


int main()
{
        int listenfd;
        int connectfd;
        struct sockaddr_in server;
        struct sockadd_in client;
        char buffer[MAXDATASIZE];
        int sin_size;
        
        
        /*建立套接字*/
        
        if(-1==(listenfd=(socket(AF_INET,SOCK_STREAM,0))))
        {
                /* 输出错误信息;*/
                printf("socket error !");
                exit(1);        
        }        
        
        /*绑定服务端端口*/
        bzero(&server,sizeof(struct sockaddr));
        server.sin_family=AF_INET;
        server.sin_port=htons(PORT);
        server.sin_addr.s_addr=htonl(INADDR_ANY);
        
        if (-1==bind(listenfd,(struct sockaddr*)&server,sizeof(struct sockaddr)))
        {
                
                /* 输出出错信息;*/
                printf("bind error !");
                close(listenfd);
                exit(1);        
        }
        
        /*侦听绑定的端口*/
        if (-1==listen(listenfd,backlog))
        {
                /* 输出出错信息;*/
                printf("listen error !");
                close(listenfd);
                exit(1);
        }
        
        /*接受用户的请求*/
        sin_size=sizeof(struct sockaddr);
        if (-1==(connectfd=accept(listenfd,(strcut sockaddr*)&client,&sin_size)))
        {
                /* 输出出错信息;*/
                printf("connect error !");
                close(connectfd);
                exit(1);        
        }
        
        while(1)
        {
                /* 调用send、recv、read与write收发数据 */
                connectfd=accept(listenfd,(strcut sockaddr*)&client,&sin_size);
                bzero(buffer,MAXDATASIZE);
                read(connectfd,buffer,MAXDATASIZE);
                int ret =recv(connectfd,buffer,sizeof(buffer),0);
                printf("server received %d bytes:%s",ret,buffer);
                send(listenfd,"welcome !";sizeof("welcome !"),0) ;
                write(connectfd,"welcome !";sizeof("welcome !"));                
                        
        }        
        close(listenfd);
        close(connectfd);
}

|
我写了个 模板,楼主你自己对照看吧  ubnutn7.10  gcc4.1 测试没 问题的
/**************************
          server
***************************/
#include 
#include 
#include 
#include 
#include 
#include 

#define SERVER_PORT 2000
#define LENGTH_OF_LISTEN_QUEUE 10 
#define BUFFER_SIZE 2048

int main(int argc, char *argv[])
{
int servfd,clifd;
struct sockaddr_in servaddr,cliaddr;
char buf[BUFFER_SIZE];

/*创建套接字号,地址族,套接字类型,传输协议*/
if ((servfd = socket(AF_INET,SOCK_STREAM,0)) 

    
 
 

您可能感兴趣的文章:

  • 在Linux下开发手机客户端或Pc客户端交互的服务器,需要学哪些知识?
  • linux端是服务器,客户端连接后,有时并不知道客户端断开,怎么侦测?
  • 问一个socket问题,服务器不停send,客户端进入睡眠服务器会断开
  • 已和客户端连接建立的socket在客户端CTRL-C后怎么在服务器端捕捉这个错误?
  • 在服务器端怎样检测客户端与服务器端的某个会话在一段时间里面没有通信,然后在服务器端终止该会话??
  • 配置DNS服务器后,服务器可解析,客户端不能解析。求解
  • 请问: 当服务器采用epoll 时,客户端连不上,但若服务器端不用epoll时,也连上并发消息,这是为什么啊
  • 我的DNS服务器端能用,提示query logging is OFF,在客户端 不能用,提示找不到服务器
  • 请问tcp 客户服务器模型(C/S模型)客户端两个send如果发送间隔太短,服务器端为什么会认为受到的只是一个包
  • 利用UDP时客户端为何接收到不到服务器发来的消息????
  • 客户端 socket 断开后 服务器端系统如何处理?
  • 聊天服务器与客户端 NFC Chat
  • 帮我理理客户端运行的applet调用服务器数据库的问题?
  • 请问java编制的程序主要运行在服务器端还是客户端?听说它的速度比较慢,怎么可以运行在服务器端呢?谢谢!
  • Applet 是在服务器端执行还是在客户端执行??
  • 客户端终止,服务器子程序退出的问题。
  • 怎样实现从服务器发串字符到客户端
  • PHP的XML-RPC服务器和客户端库 Ripcord
  • 客户端如何操作服务器的文件(如查看文件列表,上传,下载)(★)
  • 客户端关闭,服务器进程也关闭?
  • 如何用jsp或者是java写出一个可以访问客户端的应用(就象activeX一样重服务器下在到客户,用一操做客户的资源)
  • 用LINUX做HELIX服务器,用W2K做客户机,客户机视频点播,连接时出现问题!!!!
  • 如何控制Corba客户端的连接?(比如在服务器上可以关掉客户端的连接)(发言就给分)
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • 客户端 不能发送信息到服务器端?(在SOCKET)请看看下面这段程序有什么错?----客户端的发送信息服务器端收不了!
  • 服务器端关闭,客户端select 会一直可读, 读的长度是-1,怎么在不关闭客户端socket下,清除可读
  • 服务器端的共享内存可否被远程客户端的进程所挂载使用?
  • tcpip服务器客户端的小问题?
  • 关于客户服务器结构与浏览器服务器结构编程的比较
  • 客户机和服务器可以双向收发数据的socket编程
  • 关于linux环境下服务器 是如何获取客户端的相关硬件信息
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
  • 哪个地方有下载linux服务器源代码?
  • 读一个服务器软件代码时候碰到的疑惑...
  • 邮件服务器难做吗?谁有原代码。
  • centos服务器定时执行一段php代码
  • 创建 sql server 链接服务器的sql代码
  • 哪位大哥能不能提供一个简单一点的Telnet服务器的代码?(Linux的telnetd挺复杂的)
  • shell脚本从SVN推送到多台服务器的代码
  • haskell实现多线程服务器实例代码
  • =======[江湖救急]=======谁有linux下http服务器源代码,简单的就可以
  • MSSQLSERVER跨服务器连接(远程登录)的示例代码
  • (****非作业帖),求ftp客户/服务器c语言源代码.
  • python 从远程服务器下载东西的代码
  • 分析python服务器拒绝服务攻击代码
  • 求用c语言实现支持ipv6的telnet服务器源代码
  • Rdesktop添加录音代码,远程连接win7,收不到服务器发过来的录音相关的数据
  • Shell脚本实现复制文件到多台服务器的代码分享
  • 请教带定时器的,对高速运转的客户服务器(cs)系统的代码应该怎么调试。
  • 服务器并发时,代码是否也复制?
  • windows下的代码上传至linux服务器上,解决文件后缀名大小写问题
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 请问在红旗Linux多功能服务器版上(不是数据库服务器版)能否正常安装使用Oracle?红旗Linux数据库服务器版要比红旗Linux多功能服务器版贵
  • nginx 服务器介绍
  • 校园网,www服务器,邮件服务器,数据库服务器等各用什么平台(系统)性能最佳?
  • 代理服务器原理,功能及作用详细介绍
  • 双linux服务器如何能在一台服务器崩溃的情况下在另一台服务器上启动相应服务
  • Apache HTTP服务器2.4中的新功能概览
  • 如何有效判断服务器已经连接不上(服务器关闭,服务器非法退出等原因)
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 恳请对服务器的开发有经验的谈谈服务器开发经验(Unix/Linux & Win32):服务器构架、内存泄漏检测,异常出错……!!!
  • nginx服务器基本特性及使用技巧


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    HTML教程 iis7站长之家