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

SOCKET聊天室程序求助(有源程序)100分

    来源: 互联网  发布时间:2015-09-28

    本文导语:  上次的TALK程序老师说内容太少了,只好再换 从书上抄的聊天室程序,C/S模式,好象缺了个config文件,而书上又没说在哪 给一百分,希望能得到调试成功后的程序 /*inet.h*/ #ifndef __INET_H__ #define __INET_H__ #include  #include...

上次的TALK程序老师说内容太少了,只好再换
从书上抄的聊天室程序,C/S模式,好象缺了个config文件,而书上又没说在哪
给一百分,希望能得到调试成功后的程序

/*inet.h*/
#ifndef __INET_H__
#define __INET_H__
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAX_CLIENT 10
#define READ            0
#define WRITE           1
#define MAX_LINE        1000
#define MAX_NAME        100
#define SETNAME "/name"
#define __SELECT__

#endif

客户端
#include "inet.h"
#include 
#include 

extern  int init_cli();

void    add_set( fd_set *sockset, int sockfd)
{
    FD_ZERO( sockset);
    FD_SET( sockfd, sockset);
    FD_SET( 0, sockset);
}

int     main( void)
{
int sockfd;
int status;
char str[MAX_LINE];
    char    name[MAX_NAME];

    fd_set  sockset;

sockfd = init_cli();
if ( sockfd == 0) {
printf( "Init client socket error.n");
fflush( stdout);
exit( 1);
}
    
    add_set( &sockset, sockfd);

    fprintf( stdout, "Please input your name:");
    fscanf( stdin, "%s", name);
    strcpy( str, "/");
    strcat( str, name);
    write( sockfd, str, strlen( str));

    while ( 1) {
        select( sockfd+1, &sockset, NULL, NULL, NULL);
        if (FD_ISSET( sockfd, &sockset)) {
            status = read( sockfd, str, MAX_LINE);
            if ( status == 0) exit(0); 
            str[status] = '';
            printf( "%s", str);
            fflush( stdout);
        }
        if ( FD_ISSET( 0, &sockset)) {
            status = read( 0, str, MAX_LINE);
            str[status] = '';
            if ( str[0] == 'q') {
                sprintf( str, "%s leave the room.n", name);
                write( sockfd, str, strlen( str));
                close( sockfd);
                exit( 0);
            }
            if ( write( sockfd, str, strlen(str)) != strlen( str) ) {
                printf( "Write errorn");
                exit(0);
            }
        } 
        add_set( &sockset, sockfd);
   }
   return 1;
}

int init_cli( void) 
// Return sockfd if successful, else 0
{

int  sockfd;
int SERV_TCP_PORT;
char SERV_HOST_ADDR[MAX_LINE];
FILE    *fd;
struct sockaddr_in serv_addr;

fd = fopen( "config", "r");
fgets( SERV_HOST_ADDR, MAX_LINE, fd);
fscanf( fd, "%d", &SERV_TCP_PORT);
fclose( fd);

bzero( (char*)&serv_addr, sizeof( serv_addr));
serv_addr.sin_family    =AF_INET;
serv_addr.sin_addr.s_addr =inet_addr( SERV_HOST_ADDR);
serv_addr.sin_port   =htons( SERV_TCP_PORT);

if ( ( sockfd = socket( AF_INET,SOCK_STREAM,0))

    
 
 

您可能感兴趣的文章:

  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 我的ping程序怎么老是出现Socket operation on non-socket
  • linux客户端程序能否和windows端的服务器程序进行socket通信?
  • socket客户端程序的问题
  • 请教: linux下用c++写最简单的socket程序如何写?
  • 把socket客户端程序和服务端程序放在同一机器上运行,可以吗?
  • 如何清楚linux系统中以退出程序的socket连接?
  • 求助:我的第一个 socket 程序,缺少某些结构的定义
  • gdb 怎么调试socket程序
  • socket程序中,查看error需要什么头文件?
  • 我断开socket服务器日志之后,服务器程序就挂死啦
  • 基于socket的linux和Windows通信程序为什么运行特别慢?
  • 我用单机编译socket和ServerSocket程序,我应该怎样对自己的机器进行设置?
  • 请问如何在linux下用gcc调试socket程序???
  • linux下socket模拟telnet功能的程序,急求
  • 如何在redhat e4下用gcc编译socket程序,(-lsocket无法使用啊)!急,在线等
  • 多线程socket程序莫名其妙接收到SIGALRM信号问题。
  • linux socket程序,出现closed by peer问题
  • 写socket程序的时候,都需要注意哪些信号?
  • 大家一起讨论一下这个程序设计(关于socket实现http协议)。
  • 要编写一个后台的socket通讯程序,各位有没有什么好的建议?
  • 谁有socket编程的聊天室代码? TO:skyyoung(路人甲),你有吗?
  • 谁能告诉我,做一个象网易那样的聊天室,用什么方法,不要告诉我是用数据库或读写文件,是不是用多线程,socket协议。来讨论者皆有分。
  • 一个简单的linux课程设计--《基于socket聊天室的设计与实现》 帮忙分析下~
  • php socket实现的聊天室代码分享
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 紧急求助,创建socket失败!!
  • 求助!!linux下socket编程
  • socket实现多文件并发传输,求助多线程实现问题?
  • 求助 socket服务端 sun_pah被占用
  • [求助]请问socket编程中send()函数可以发送整形数据吗?
  • [求助][排错]一段利用socket连接网页,并将网页内容拷贝下来的程序。。。[有一点问题]
  • 求助UDP socket sendto返回EHOSTDOWN的问题
  • [紧急求助]socket在read时提示Connection reset by peer错误
  • 求助 关于Linux下Socket的聊天程序
  • 求助:阻塞socket在多线程情况下的防护问题
  • 求助大牛:aix平台下如何编译socket程序成功啊?
  • 技术文章 iis7站长之家
  • (新手求助)如何完善一个socket
  • [求助]关于SOCKET编程中close函数阻塞的问题。
  • 求助linux下socket多线程编程的例子(C语言写的)
  • 求助!Linux下socket编程,服务端与多线程的问题
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • 紧急求助:Linux下Socket编程的怪异问题
  • 向高手求助一个简单问题:为什么我在linux上的socket编程bind失败,告诉是权限不允许?
  • socket通信中的中文字符问题(菜鸟求助)
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • java命名空间java.net类socket的类成员方法: getreceivebuffersize定义及介绍


  • 站内导航:


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

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

    浙ICP备11055608号-3