标题:Linux 网络编程基本问题求助
只看楼主
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
结帖率:91.43%
 问题点数:0 回复次数:7 
Linux 网络编程基本问题求助
问题描述:正常编译,执行时错误提示如下:

coat@linux:~/codetest/sockserver$ ./a.out 127.0.0.1 985
connect: Socket operation on non-socket

代码:
程序代码:
/***************************************************

 *

 *  UNIX socket编程简单示例:发送文字的服务端

 *          By——thlgood(www.)

 *            2011年光棍节的前几个小时

 **************************************************/

#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
    int sock, port;
    struct sockaddr_in server_addr;
    char str[] = "Hello,World!";
    int str_length = strlen(str);

    /***********************************************************
     *检验程序参数,argv[1]为目标主机,argv[2]为目标主机的端口
     ***********************************************************/
    if (argc != 3)
      {
        printf("Error! Usage:【主机名】 【端口】");
        exit(1);
    }

    if (sock = socket(AF_INET, SOCK_STREAM, 0) < 0)
    {
        perror("socket");
        exit(2);
    }

    port = atoi(argv[2]);
    memset(&server_addr, 0, sizeof(server_addr));
    server_addr.sin_family = AF_INET;
    server_addr.sin_port = htons(port);
    if ((inet_pton(AF_INET, argv[1], &server_addr.sin_addr.s_addr)) < 0)
    {
        perror("inet_pton");
        exit(3);
    }

    if (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0)
    {
        perror("connect");
        exit(4);
    }

    if (send(sock, str, str_length, 0) != str_length);
    {
        perror("send");
        exit(5);
    }
    printf("发送成功\n");
    
    close (sock);
    return 0;
}
搜索更多相关主题的帖子: 光棍节 网络编程 operation include Socket 
2011-11-10 20:19
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
参数 是什么?
2011-11-10 20:26
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
有说明啊:

coat@linux:~/codetest/sockserver$ ./a.out 127.0.0.1 985
connect: Socket operation on non-socket

参数是127.0.0.1和985

o(∩∩)Linux & Python 群:187367181
2011-11-10 20:36
Devil_W
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:9
帖 子:1160
专家分:1797
注 册:2009-9-14
得分:0 
有点常识好不好。

你本地985端口开了?

你可以try ./a.out www. 80
2011-11-10 20:54
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
回复 4楼 Devil_W
有区别么?

我的80端口同样是关闭的。

o(∩∩)Linux & Python 群:187367181
2011-11-11 21:02
thlgood
Rank: 5Rank: 5
等 级:职业侠客
帖 子:281
专家分:381
注 册:2010-9-24
得分:0 
回复 4楼 Devil_W
我已经把它改对了。。。985或者其他的端口照样正常工作

我的UNIX没有启动web服务器,80端口是关闭的,运行前我也检查了一下,发现9985端口也是关闭的。。。请问你要我改用80端口的理由什么?

反正你说我没常识,我也来求一下科普。

o(∩∩)Linux & Python 群:187367181
2011-11-11 21:08
燕强
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:78
专家分:188
注 册:2010-8-11
得分:0 
回复 6楼 thlgood
你的客户端要连服务端,首先是要服务端的端口处于监听状态。如果服务端的端口号都没开,怎么能连上呢。
2011-11-11 22:41
khaz
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:130
专家分:188
注 册:2011-4-21
得分:0 
你服务端要binding 端口和 listen的哦
2011-11-11 22:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-354889-1-1.html




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

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