---
layout: doc
title: sockets / socket_connect
---
# socket_connect

### 名称

    socket_connect() - 启动一个 socket 连接

### 语法

    int socket_connect( int s, string address, string read_callback, string write_callback );

### 描述

    参数 `s` 是一个 socket 连接，`s` 必须是 STREAM 模式 或 MUD 模式. 参数 `address` 是将要连接的 socket 地址，地址格式类似： "127.0.0.1 23"。

    参数 `read_callback` 是 socket 获取数据时驱动程序调用的函数名称，函数原型应该是以下格式：

    void read_callback(int fd, mixed message)

    其中参数 `fd` 是接受数据的 socket 连接，参数 `message` 是接收到的数据。

    参数 `write_callback` 是 socket 准备写入数据时驱动程序调用的函数名称，函数原型应该是以下格式：

    void write_callback(int fd)

    其中参数 `fd` 是将被写入数据的 socket 连接。

### 返回值

    成功时返回 EESUCCESS ，失败（出错）时返回代表以下意义的负值：

#### 错误

    EEFDRANGE      连接描述符（Descriptor）超出范围
    EEBADF         无效的连接描述符
    EESECURITY     试图违反安全性
    EEMODENOTSUPP  不支持的 Socket 模式
    EEISLISTEN     Socket 正在监听中
    EEISCONN       Socket 已连接
    EEBADADDR      地址格式有问题
    EEINTR         中断的系统调用
    EEADDRINUSE    地址已经被占用
    EEALREADY      操作已在进行中
    EECONNREFUSED  连接被拒绝
    EECONNECT      连接有问题

### 参考

    socket_accept(3), socket_close(3), socket_create(3)

### 翻译 ###

    雪风(i@mud.ren)
