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

【socket编程问题】向一个未connect()的sockfd写入数据,程序退出了,为什么?

    来源: 互联网  发布时间:2017-03-04

    本文导语:  本帖最后由 nilite 于 2010-03-09 16:59:25 编辑 描述如下: 我用socket()创建了一个sockfd,但是故意连接失败(或者不连接),这时再向sockfd写入一些数据write(),照理说应该返回我错误,但是程序毫无征兆的退出了,这是为...

本帖最后由 nilite 于 2010-03-09 16:59:25 编辑
描述如下:
我用socket()创建了一个sockfd,但是故意连接失败(或者不连接),这时再向sockfd写入一些数据write(),照理说应该返回我错误,但是程序毫无征兆的退出了,这是为什么呢?太奇怪了。

源代码如下:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
    /*取得main函数参数*/
    struct sockaddr_in address;//socket地址
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = inet_addr("127.0.0.1");
    address.sin_port = htons(6666);
    int len = sizeof(address);
    char send_buf[30] = "大家好,我是发送内容";//发送内容
    /*如果有参数,则以参数里的内容作为IP连接,如果无参数,则使用默认值*/
    if (argc != 4)
    {
        printf("*******************************************rn");
        printf("你输入的参数不全,正确的格式应该为:rn");
        printf("./sc_eth_com "ip地址" "端口" "发送内容"rn");
        printf("未输入的参数将使用默认值连接rn");
        printf("*******************************************rn");
    }
    if (argc > 1)
    {
        address.sin_addr.s_addr = inet_addr(argv[1]);
        if (address.sin_addr.s_addr == INADDR_NONE)
        {
            printf("IP地址格式错误,参数被强制转换为127.0.0.1rn");
            address.sin_addr.s_addr = inet_addr("127.0.0.1");
        }
    }
    if (argc > 2)
    {
        address.sin_port = htons((unsigned short)atoi(argv[2]));
    }
    if (argc > 3)
    {
        strncpy(send_buf, argv[3], 29);
        send_buf[29] = '';
    }

    /*展示所有参数*/
    char port_str[6] = {0};
    sprintf(port_str, "%d", ntohs(address.sin_port));
    printf("参数值 >>> IP地址:%srn", inet_ntoa(address.sin_addr));
    printf("参数值 >>> 端口号:%srn", port_str);
    printf("参数值 >>> 发送内容:[%s]rn", send_buf);

    #if 1
    if (write(5, send_buf, strlen(send_buf)+1) 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.net类socket的类成员方法: connect定义及介绍
  • socket编程,关于connect阻塞问题
  • socket编程,设为非阻塞,客户端怎么判断connect已经成功呢?
  • 关于Socket中connect连接host的超时问题,急!!!
  • 怎样使socket对客户端的connect直接拒绝?
  • 关于socket Connection time out的问题(ARM)
  • 能ping通socket connect不上
  • socket错误提示: Transport endpoint is not connected
  • [紧急求助]socket在read时提示Connection reset by peer错误
  • socket客户端connect服务端后,如何断开连接?
  • socket编程connect的问题
  • socket连接函数connect()返回错误 errno 为 115,什么原因?谢谢
  • 我做的 客戶耑程序執行暸socket,connect,缺在write() 時齣錯,error:broken pipe
  • 关于网络编程中SOCKET CONNECTION释放的问题 -100 cents
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • 在sockets中的Connect()/Accept()这样的包裹函数
  • Connection reset by peer: JVM_recv in socket input stream read这个问题到底怎么解决??
  • 2002-10-08 03:14:33 - Ctx( ): IOException in: R( + /EditAccount/SearchAccount.jsp + null) Connection aborted by peer: socket w
  • socket 編程 connect錯誤
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • socket的connect老是出错!高手帮忙找一下原因
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • socket 通讯开发包 Simple Sockets
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • C++ Socket 库 C++ Sockets
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?


  • 站内导航:


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

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

    浙ICP备11055608号-3