MiniGUI

/* Returns fd if all OK, -1 on error. */

int serv_listen (const char* name);
服务器调用该函数建立一个监听套接字,并返回套接字文件描述符。建议将服务器监听套接字建立在 /var/tmp/ 目录下。
 
MAX_NR_LISTEN_FD 宏定义了系统能够监听的最多文件描述符数,默认定义为 5
 
RegisterListenFD 函数在系统当中注册一个需要监听的文件描述符,并指定监听的事件类型(type 参数,可取 POLLIN、 POLLOUT 或者 POLLERR),接收 MSG_FDEVENT 消息的窗口句柄以及一个上下文信息。
UnregisterListenFD 函数注销一个被注册的监听文件描述符。
 
/* returns new fd if all OK, < 0 on error */
int serv_accept (int listenfd, pid_t *pidptr, uid_t *uidptr);
服务器调用该函数接受来自客户的连接请求。
 
/* Returns fd if all OK, -1 on error. */
int cli_conn (const char* name, char project);
客户调用该函数连接到服务器,其中 name 是客户的监听套接字。该函数为客户建立的套接字将保存在 /var/tmp/ 目录中,并且以 -c 的方式命名,其中 c 是用来区别不同套接字通讯用途的字母,由 project 参数指定。 MiniGUI-Processes 内部使用了 ‘a’,所以由应用程序建立的套接字,应该使用除 ‘a’ 之外的字母。
 
#define SOCKERR_IO -1
#define SOCKERR_CLOSED -2
#define SOCKERR_INVARG -3
#define SOCKERR_OK 0
 
 
/* Returns SOCKERR_OK if all OK, < 0 on error.*/
int sock_write_t (int fd, const void* buff, int count, unsigned int timeout);
int sock_read_t (int fd, void* buff, int count, unsigned int timeout);
 
#define sock_write(fd, buff, count) sock_write_t(fd, buff, count, 0)
#define sock_read(fd, buff, count) sock_read_t(fd, buff, count, 0)
在建立并连接之后,客户和服务器之间就可以使用 sock_write_t 函数和 sock_read_t 函数进行数据交换。可以传递进入一个超时参数,注意该参数以 10ms 为单位,为零时超时设置失效,且超时设置只在 mginit 程序中有效。
 
 
 
原文地址:https://www.cnblogs.com/paullam/p/3638166.html