| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 737 人关注过本帖
标题:socket 编程 :总是protocal mismatch
只看楼主 加入收藏
天各一方2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-1-24
结帖率:0
收藏
已结贴  问题点数:20 回复次数:9 
socket 编程 :总是protocal mismatch
大家好,
我在学习socket网络编程 ,在网上找到一个程序,一个clint 程序 ,一个server程序
我是这样运行的:
gcc -o client client.c
gcc -o server server .c
./server 22
ctrl +c
telnet localhost 22
然后出现几行字说链接成功接着我输什么都是
protocal mismatch
有谁知道为什么么么?
如下:
client 程序 :

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<unistd.h>
#define BUFFER_SIZE 1024

int handing(int sock){
    char buffer[BUFFER_SIZE];
    int bytes;
    bytes=recv(sock,buffer,sizeof(buffer)-1,0);
    if(bytes==-1) return -1;
    buffer[bytes]='\0';
    printf("%s",buffer);
    return 0;
}

int main(int argc,char *argv[]){
    int s;
    struct sockaddr_in srv;
    if(argc!=3){
    printf("usage !");
    return 1;
    }
    s=socket(AF_INET,SOCK_STREAM,0);
    srv.sin_addr.s_addr=inet_addr(argv[1]);
    srv.sin_port=htons((unsigned short int) atoi(argv[2]));
    srv.sin_family=AF_INET;
    if(connect(s,&srv,sizeof(srv))==-1){
    perror("connect");
    return 3;
    }
    if(handing(s)==-1){
    fprintf(stderr,"%s: error in handing()\n",argv[0]);
    return 4;
    }
    close(s);
    return 0;
}

server程序 :

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netdb.h>
#include<arpa/inet.h>
#include<unistd.h>

#define BUFFER_SIZE 1024
int handing(int c){
    char buffer[BUFFER_SIZE],name[BUFFER_SIZE];
    int bytes;
    strcpy(buffer,"My name is: ");
    bytes=send(c,buffer,strlen(buffer),0);
    bytes=recv(c,name,strlen(name)-1,0);
    name[bytes]='\0';
    sprintf(buffer,"hallo %s,nice to meet you !\r\n",name);
    bytes=send(c,buffer,strlen(buffer),0);
    return 0;
}
int main(int argc,char *argv[]){
    int s,c,cli_size;
    struct sockaddr_in srv,cli;
    if(argc!=2){
    printf("usage\n");
    return 1;
    }
    s=socket(AF_INET,SOCK_STREAM,0);
    srv.sin_addr.s_addr=INADDR_ANY;
    srv.sin_port=htons((unsigned short int)atoi(argv[1]));
    srv.sin_family=AF_INET;
    bind(s,&srv,sizeof(srv));
    listen(s,3);
    for(;;){
    cli_size=sizeof(cli);
    c=accept(s,&cli,&cli_size);
    printf("client from %s",inet_ntoa(cli.sin_addr));
    handing(c);
    close(c);
    }
    return 0;
}
搜索更多相关主题的帖子: localhost 
2011-01-24 05:29
Kabie
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:69
专家分:185
注 册:2009-8-21
收藏
得分:3 
谁教你ctrl+c的。。。
2011-01-24 07:14
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:3 
是我教他ctrl+c的
2011-01-24 09:01
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:3 
人才
2011-01-24 09:40
wujieru
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:1108
专家分:1939
注 册:2010-10-9
收藏
得分:0 
别这么说 我是一般性人才
收到的鲜花
  • Devil_W2011-01-24 09:53 送鲜花  -3朵   附言:2
2011-01-24 09:44
天各一方2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-1-24
收藏
得分:0 
谢谢大家的回复,可是能帮我解决一下问题么,我非常想尽快解决问题啊
2011-01-24 17:10
天各一方2011
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-1-24
收藏
得分:0 
顶顶抵南宁
2011-01-24 19:36
点线面
Rank: 8Rank: 8
来 自:NO.-1
等 级:蝙蝠侠
帖 子:525
专家分:980
注 册:2011-1-3
收藏
得分:3 
平台不一样,只路过一下

小代码,大智慧
2011-01-24 19:42
zhaoya881010
Rank: 9Rank: 9Rank: 9
来 自:芒砀古郡
等 级:蜘蛛侠
威 望:1
帖 子:339
专家分:1177
注 册:2010-11-21
收藏
得分:3 
看了你的程序感觉有点小毛病,看着别扭还有那个结构体地址用转换成通用的地址的,服务器开启来的时候不能结束的,不然客户端怎么连上去?

Go Go Go
2011-01-24 20:48
cacker
该用户已被删除
收藏
得分:3 
提示: 作者被禁止或删除 内容自动屏蔽
2011-01-25 01:01
快速回复:socket 编程 :总是protocal mismatch
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025208 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved