亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 3584 | 回復: 8
打印 上一主題 下一主題

急 SOCKET編程 [復制鏈接]

論壇徽章:
0
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2008-11-10 18:41 |只看該作者 |倒序瀏覽
//服務器程序
#include<sys/socket.h>
#include<sys/types.h>
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include<errno.h>
#include<sys/wait.h>
#include<netinet/in.h>

#define SERVPORT 128    //端口號
#define BACKLOG 10     //最大鏈接數(shù)

typedef struct sockaddr_in st;
typedef struct sockaddr sd;
int main()
{
        int sockfd,clientfd;
        st my_adder;
        st client_adder;
        int sin_size;
        if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1)     //獲取描訴符
                {perror("socket default!";
                exit(1);
                }
               
        printf("%d",sockfd);
        my_adder.sin_family = AF_INET;
        my_adder.sin_port = htons(SERVPORT);
        my_adder.sin_addr.s_addr = INADDR_ANY;
        bzero(&(my_adder.sin_zero),;
       
        if(bind(sockfd,(sd *) &my_adder,sizeof(sd)) == -1)   //綁定到端口
                {perror("bind error!";
                exit(1);
                }
        if(listen(sockfd,BACKLOG) == -1){          //偵聽請求信息
                perror("linsten error";
                exit(1);
                }
        while(1){
                sin_size = sizeof(st);
                if((clientfd = accept(sockfd,(sd *)&client_adder,&sin_size)) == -1){   //接受與請求方建立鏈接
                        perror("accept error!";
                        continue;
                        }
                printf("accept a meg from:%s\n",inet_ntoa(client_adder.sin_addr));   
                if(!fork()){
                        if(send(clientfd,"connect\n",26,0) == -1)  //向請求方發(fā)送消息
                                perror("send error!";
                        close(clientfd);
                        exit(0);
                        }
                close(clientfd);
                }
}
//客戶端程序
#include<sys/socket.h>
#include<sys/types.h>
#include<stdio.h>
#include<netdb.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
#include<sys/wait.h>
#include<netinet/in.h>

typedef struct sockaddr_in st;
typedef struct sockaddr sd;

#define SERVPORT 128
#define MAXDATASIZE 100
int main(int argc,char *argv[])
{
        int sockfd,recvbytes;
        char buf[MAXDATASIZE];
        struct hostent *host;
        st servaddr;
        if(argc<2){
                fprintf(stdin,"please enter the sercer's hostname!\n";
                exit(1);
                }
        if((host = gethostbyname(argv[1])) == NULL){
                perror("gethostbyname error!";
                exit(1);
                }
        if (sockfd = socket(AF_INET,SOCK_STREAM,0) == -1){
                perror("socket creat error!";
                exit(1);
                }
//建立服務器端信息
        servaddr.sin_family = AF_INET;
        servaddr.sin_port = htons(SERVPORT);
        servaddr.sin_addr = *((struct in_addr *)host->h_addr);
        //inet_pton( AF_INET, "127.0.0.3", &servaddr.sin_addr );
        bzero(&(servaddr.sin_zero),;
        if (connect(sockfd,(sd *)&servaddr,sizeof(sd)) == -1){    //請求與服務器建立鏈接
                perror("connect error!";
                exit(1);
                }
        if((recvbytes = recv(sockfd,buf,MAXDATASIZE,0)) == -1){    //接收服務器端發(fā)送的信息
                perror("receve error!";
                exit(1);
                }
//顯示收到的信息
        buf[recvbytes] = '\0';
        printf("receve:%s",buf);
        close(sockfd);
}
    在一個終端運行服務器程序后,在另外一個終端運行客戶端程序8-2 127.0.0.1
       出現(xiàn)connect error!: Socket operation on non-socket錯誤,請大家?guī)兔鉀Q下  謝謝
   那個笑臉不知道怎么去掉了

[ 本帖最后由 sydnash 于 2008-11-10 19:23 編輯 ]

論壇徽章:
11
技術圖書徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [報告]
發(fā)表于 2008-11-10 18:52 |只看該作者

回復 #1 sydnash 的帖子

先格式化代碼,這樣看很累,也不方便別人幫你調試,論壇置頂有說如何貼代碼

論壇徽章:
0
3 [報告]
發(fā)表于 2008-11-10 19:24 |只看該作者

回復 #2 timespace 的帖子

那個笑臉搞不定啊

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報告]
發(fā)表于 2008-11-10 20:03 |只看該作者
原帖由 sydnash 于 2008-11-10 19:24 發(fā)表
那個笑臉搞不定啊

參見置頂貼

論壇徽章:
0
5 [報告]
發(fā)表于 2008-11-11 10:47 |只看該作者

回復 #1 sydnash 的帖子

在這行"if (sockfd = socket(AF_INET,SOCK_STREAM,0) == -1){",由于運算符優(yōu)先順序,所以
sockfd 得到的 "socket(AF_INET,SOCK_STREAM,0) == -1" 的 bool 值,加上括號即可
"if ((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1){"

論壇徽章:
0
6 [報告]
發(fā)表于 2008-11-11 10:48 |只看該作者
  1. int
復制代碼

論壇徽章:
0
7 [報告]
發(fā)表于 2008-11-11 17:33 |只看該作者

回復 #5 流云CJ 的帖子

謝謝這位朋友
  照你說的做了  也對了   沒想到就這樣一個小問題
    看來一個良好的編程習慣確實很重要   還須改進阿

論壇徽章:
0
8 [報告]
發(fā)表于 2011-09-05 10:20 |只看該作者
非常感謝,我也是在5樓高人的提示下解決問題了

看錯sock_fd  和socket 把
左括號 放置在了 socket前了,
應該是放置在sock_fd 前的  要看清楚了

論壇徽章:
0
9 [報告]
發(fā)表于 2011-09-05 10:24 |只看該作者
回復 8# mstearaway


    你這結貼的時間夠長的
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP