您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ sockfd_lookup函数代码示例

51自学网 2021-06-03 08:06:27
  C++
这篇教程C++ sockfd_lookup函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中sockfd_lookup函数的典型用法代码示例。如果您正苦于以下问题:C++ sockfd_lookup函数的具体用法?C++ sockfd_lookup怎么用?C++ sockfd_lookup使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了sockfd_lookup函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: sock_socketpair

/* 这个和pipe功能有相似之处,pipe是单工的,socketpair是双工的 * family只能是UNIX域的。 */static intsock_socketpair(int family, int type, int protocol, unsigned long usockvec[2]){  int fd1, fd2, i;  struct socket *sock1, *sock2;  int er;  DPRINTF((net_debug,	"NET: sock_socketpair: family = %d, type = %d, protocol = %d/n",							family, type, protocol));  /*   * Obtain the first socket and check if the underlying protocol   * supports the socketpair call.   */  /* 如果创建失败,则直接返回 */  if ((fd1 = sock_socket(family, type, protocol)) < 0) return(fd1);  sock1 = sockfd_lookup(fd1, NULL);  if (!sock1->ops->socketpair) {	sys_close(fd1);	return(-EINVAL);  }  /* Now grab another socket and try to connect the two together. */  if ((fd2 = sock_socket(family, type, protocol)) < 0) {	sys_close(fd1);	return(-EINVAL);  }  sock2 = sockfd_lookup(fd2, NULL);  if ((i = sock1->ops->socketpair(sock1, sock2)) < 0) {	sys_close(fd1);	sys_close(fd2);	return(i);  }  sock1->conn = sock2;  sock2->conn = sock1;  /* 完成socketpair操作后,则这只套接字的状态为连接状态 */  sock1->state = SS_CONNECTED;  sock2->state = SS_CONNECTED;  er=verify_area(VERIFY_WRITE, usockvec, 2 * sizeof(int));  if(er)  	return er;  put_fs_long(fd1, &usockvec[0]);  put_fs_long(fd2, &usockvec[1]);  return(0);}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:51,


示例2: sockfd_lookup

static struct socket *get_raw_socket(int fd){	struct {		struct sockaddr_ll sa;		char  buf[MAX_ADDR_LEN];	} uaddr;	int uaddr_len = sizeof uaddr, r;	struct socket *sock = sockfd_lookup(fd, &r);	if (!sock)		return ERR_PTR(-ENOTSOCK);	/* Parameter checking */	if (sock->sk->sk_type != SOCK_RAW) {		r = -ESOCKTNOSUPPORT;		goto err;	}	r = sock->ops->getname(sock, (struct sockaddr *)&uaddr.sa,			       &uaddr_len, 0);	if (r)		goto err;	if (uaddr.sa.sll_family != AF_PACKET) {		r = -EPFNOSUPPORT;		goto err;	}	return sock;err:	sockfd_put(sock);	return ERR_PTR(r);}
开发者ID:383530895,项目名称:linux,代码行数:32,


示例3: sock_connect

/* 去连接服务器 * fd是连接套接字的文件描述符 * uservaddr是服务器地址 * addrlen地址长度 */static int sock_connect(int fd, struct sockaddr *uservaddr, int addrlen){  struct socket *sock;  struct file *file;  int i;  DPRINTF((net_debug, "NET: sock_connect: fd = %d/n", fd));  if (fd < 0 || fd >= NR_OPEN || (file=current->filp[fd]) == NULL)								return(-EBADF);    if (!(sock = sockfd_lookup(fd, &file))) return(-ENOTSOCK);  switch(sock->state) {	case SS_UNCONNECTED:		/* This is ok... continue with connect */		break;	case SS_CONNECTED:		/* Socket is already connected */		return -EISCONN;	case SS_CONNECTING:		/* Not yet connected... we will check this. */		return(sock->ops->connect(sock, uservaddr,					  addrlen, file->f_flags));	default:		DPRINTF((net_debug,			"NET: sock_connect: socket not unconnected/n"));		return(-EINVAL);  }  /* 开始真正的连接服务器 */  i = sock->ops->connect(sock, uservaddr, addrlen, file->f_flags);  if (i < 0) {	DPRINTF((net_debug, "NET: sock_connect: connect failed/n"));	return(i);  }  return(0);}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:40,


示例4: handle_varp_sock

/** Handle some skbs on a varp socket (if any). * * @param fd socket file descriptor * @param n maximum number of skbs to handle * @return number of skbs handled */static int handle_varp_sock(int fd, int n){    int ret = 0;    int err = 0;    struct sk_buff *skb;    struct socket *sock = NULL;    sock = sockfd_lookup(fd, &err);    if (!sock){        wprintf("> no sock for fd=%d/n", fd);        goto exit;    }    for( ; ret < n; ret++){        if(!sock->sk) break;        skb = skb_dequeue(&sock->sk->sk_receive_queue);        if(!skb) break;        // Call the skb destructor so it isn't charged to the socket anymore.        // An skb from a socket receive queue is charged to the socket        // by skb_set_owner_r() until its destructor is called.        // If the destructor is not called the socket will run out of        // receive queue space and be unable to accept incoming skbs.        // The destructor used is sock_rfree(), see 'include/net/sock.h'.        // Other destructors: sock_wfree, sk_stream_rfree.        skb_orphan(skb);        handle_varp_skb(skb);    }    sockfd_put(sock);  exit:    dprintf("< ret=%d/n", ret);    return ret;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:36,


示例5: compat_sys_getsockopt

asmlinkage long compat_sys_getsockopt(int fd, int level, int optname,				char __user *optval, int __user *optlen){	int err;	struct socket *sock = sockfd_lookup(fd, &err);	if (sock) {		err = security_socket_getsockopt(sock, level, optname);		if (err) {			sockfd_put(sock);			return err;		}		if (level == SOL_SOCKET)			err = compat_sock_getsockopt(sock, level,					optname, optval, optlen);		else if (sock->ops->compat_getsockopt)			err = sock->ops->compat_getsockopt(sock, level,					optname, optval, optlen);		else			err = sock->ops->getsockopt(sock, level,					optname, optval, optlen);		sockfd_put(sock);	}	return err;}
开发者ID:AdrianHuang,项目名称:linux-3.8.13,代码行数:26,


示例6: sock_socketpair

static intsock_socketpair(int family, int type, int protocol, int usockvec[2]){	int fd1, fd2, i;	struct socket *sock1, *sock2;	PRINTK("sys_socketpair: family = %d, type = %d, protocol = %d/n",	       family, type, protocol);	/*	 * obtain the first socket and check if the underlying protocol	 * supports the socketpair call	 */	if ((fd1 = sock_socket(family, type, protocol)) < 0)		return fd1;	sock1 = sockfd_lookup(fd1, NULL);	if (!sock1->ops->socketpair) {		sys_close(fd1);		return -EINVAL;	}	/*	 * now grab another socket and try to connect the two together	 */	if ((fd2 = sock_socket(family, type, protocol)) < 0) {		sys_close(fd1);		return -EINVAL;	}	sock2 = sockfd_lookup(fd2, NULL);	if ((i = sock1->ops->socketpair(sock1, sock2)) < 0) {		sys_close(fd1);		sys_close(fd2);		return i;	}	sock1->conn = sock2;	sock2->conn = sock1;	sock1->state = SS_CONNECTED;	sock2->state = SS_CONNECTED;	verify_area(usockvec, 2 * sizeof(int));	put_fs_long(fd1, &usockvec[0]);	put_fs_long(fd2, &usockvec[1]);	return 0;}
开发者ID:binsys,项目名称:doc-linux,代码行数:45,


示例7: sock_accept

/* fd是监听的套接字,该函数的执行过程为,首先在sockets数组当中申请一个 * struct socket,在申请struct socket的过程中就给socket分配了inode节点, * 然后在分配一个struct file结构,最后就返回一个新的文件描述符,该过程是一个 * 反向的过程 */static int sock_accept(int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen){  struct file *file;  struct socket *sock, *newsock;  int i;  DPRINTF((net_debug, "NET: sock_accept: fd = %d/n", fd));  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))								return(-EBADF);  /* 找到监听fd的socket结构 */  if (!(sock = sockfd_lookup(fd, &file))) return(-ENOTSOCK);  if (sock->state != SS_UNCONNECTED) {	DPRINTF((net_debug, "NET: sock_accept: socket isn't unconnected/n"));	return(-EINVAL);  }  if (!(sock->flags & SO_ACCEPTCON)) {	DPRINTF((net_debug,		"NET: sock_accept: socket not accepting connections!/n"));	return(-EINVAL);  }	/* 非阻塞的获取一个socket结构 */  if (!(newsock = sock_alloc(0))) {	printk("NET: sock_accept: no more sockets/n");	return(-EAGAIN);  }  /* 两个socket的类型,协议族操作函数相同 */  newsock->type = sock->type;  newsock->ops = sock->ops;  if ((i = sock->ops->dup(newsock, sock)) < 0) {	sock_release(newsock);	return(i);  }  i = newsock->ops->accept(sock, newsock, file->f_flags);  if ( i < 0) {	sock_release(newsock);	return(i);  }  /* 给新的socket分配一个文件描述符 */  if ((fd = get_fd(SOCK_INODE(newsock))) < 0) {	sock_release(newsock);	return(-EINVAL);  }  DPRINTF((net_debug, "NET: sock_accept: connected socket 0x%x via 0x%x/n",							sock, newsock));  if (upeer_sockaddr)	newsock->ops->getname(newsock, upeer_sockaddr, upeer_addrlen, 1);  /* 返回新的socket文件描述符 */  return(fd);}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:61,


示例8: sock_getpeername

static intsock_getpeername(int fd, struct sockaddr *usockaddr, int *usockaddr_len){	struct socket *sock;	PRINTK("sys_getpeername: fd = %d/n", fd);	if (!(sock = sockfd_lookup(fd, NULL)))		return -EBADF;	return sock->ops->getname(sock, usockaddr, usockaddr_len, 1);}
开发者ID:binsys,项目名称:doc-linux,代码行数:10,


示例9: sock_getpeername

static intsock_getpeername(int fd, struct sockaddr *usockaddr, int *usockaddr_len){  struct socket *sock;  DPRINTF((net_debug, "NET: sock_getpeername: fd = %d/n", fd));  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)			return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  return(sock->ops->getname(sock, usockaddr, usockaddr_len, 1));}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:11,


示例10: hidp_sock_ioctl

static int hidp_sock_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){	void __user *argp = (void __user *) arg;	struct hidp_connadd_req ca;	struct hidp_conndel_req cd;	struct hidp_connlist_req cl;	struct hidp_conninfo ci;	struct socket *csock;	struct socket *isock;	int err;	BT_DBG("cmd %x arg %lx", cmd, arg);	switch (cmd) {	case HIDPCONNADD:		if (!capable(CAP_NET_ADMIN))			return -EACCES;		if (copy_from_user(&ca, argp, sizeof(ca)))			return -EFAULT;		csock = sockfd_lookup(ca.ctrl_sock, &err);		if (!csock)			return err;		isock = sockfd_lookup(ca.intr_sock, &err);		if (!isock) {			sockfd_put(csock);			return err;		}<<<<<<< HEAD		if (csock->sk->sk_state != BT_CONNECTED ||				isock->sk->sk_state != BT_CONNECTED) {=======		if (csock->sk->sk_state != BT_CONNECTED || isock->sk->sk_state != BT_CONNECTED) {>>>>>>> 296c66da8a02d52243f45b80521febece5ed498a			sockfd_put(csock);			sockfd_put(isock);			return -EBADFD;		}
开发者ID:Core2idiot,项目名称:Kernel-Samsung-3.0...-,代码行数:41,


示例11: sock_remove_wait_queue

/** Remove a wait queue from a socket. * * @param fd socket file descriptor * @param waitq queue * @return 0 on success, error code otherwise */int sock_remove_wait_queue(int fd, wait_queue_t *waitq){    int err = -EINVAL;    struct socket *sock = NULL;    if(fd < 0) goto exit;    sock = sockfd_lookup(fd, &err);    if (!sock) goto exit;    remove_wait_queue(sock->sk->sk_sleep, waitq);    sockfd_put(sock);    err = 0;  exit:    return err;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:19,


示例12: sock_set_callback

/** Set the data ready callback on a socket. */int sock_set_callback(int fd){    int err = -EINVAL;    struct socket *sock = NULL;    if(fd < 0) goto exit;    sock = sockfd_lookup(fd, &err);    if (!sock) goto exit;    sock->sk->sk_data_ready = sock_data_ready;    sockfd_put(sock);    err = 0;  exit:    return err;}
开发者ID:Angel666,项目名称:android_hardware_intel,代码行数:15,


示例13: hone_ioctl

static int hone_ioctl(struct inode *inode, struct file *file,		unsigned int num, unsigned long param)#endif{	struct hone_reader *reader = file->private_data;	int err;	if (_IOC_TYPE(num) != 0xE0)		return -EINVAL;	switch (num) {	case HEIO_RESTART:		atomic_set_mask(READER_RESTART, &reader->flags);		wake_up_interruptible_all(&reader->event_wait_queue);		return 0;	case HEIO_GET_AT_HEAD:		return atomic_read(&reader->flags) & READER_HEAD ? 1 : 0;	case HEIO_GET_SNAPLEN:		return put_user(reader->info.snaplen, (unsigned int __user *) param);	case HEIO_SET_SNAPLEN:		reader->info.snaplen = (unsigned int) param;		atomic_set_mask(READER_HEAD, &reader->flags);		return 0;	case HEIO_SET_FILTER_SOCK:	{		int fd = (int) param;		struct sock *sk;		if (fd != -1) {			struct socket *sock;			if (!(sock = sockfd_lookup(fd, &err)))				return err;			sk = sock->sk;			sock_hold(sk);			fput(sock->file);		} else {			sk = NULL;		}		for (;;) {			struct sock *old_sk = reader->filter_sk;			if (cmpxchg(&reader->filter_sk, old_sk, sk) == old_sk) {				if (old_sk)					sock_put(old_sk);				break;			}		}		return 0;	}	}	return -EINVAL;}
开发者ID:HoneProject,项目名称:Linux-Sensor,代码行数:51,


示例14: sock_accept

/* * for accept, we attempt to create a new socket, set up the link with the * client, wake up the client, then return the new connected fd. */static intsock_accept(int fd, struct sockaddr *upeer_sockaddr, int *upeer_addrlen){	struct file *file;	struct socket *sock, *newsock;	int i;	PRINTK("sys_accept: fd = %d/n", fd);	if (!(sock = sockfd_lookup(fd, &file)))		return -EBADF;	if (sock->state != SS_UNCONNECTED) {		PRINTK("sys_accept: socket isn't unconnected/n");		return -EINVAL;	}	if (!(sock->flags & SO_ACCEPTCON)) {		PRINTK("sys_accept: socket not accepting connections!/n");		return -EINVAL;	}	if (!(newsock = sock_alloc(0))) {		printk("sys_accept: no more sockets/n");		return -EAGAIN;	}	newsock->type = sock->type;	newsock->ops = sock->ops;	if ((i = sock->ops->dup(newsock, sock)) < 0) {		sock_release(newsock);		return i;	}	if ((fd = get_fd(SOCK_INODE(newsock))) < 0) {		sock_release(newsock);		return -EINVAL;	}	i = newsock->ops->accept(sock, newsock, file->f_flags);	if ( i < 0)	  {	     sys_close (fd);	     return (i);	  }	PRINTK("sys_accept: connected socket 0x%x via 0x%x/n",	       sock, newsock);	if (upeer_sockaddr)		newsock->ops->getname(newsock, upeer_sockaddr,				      upeer_addrlen, 1);	return fd;}
开发者ID:binsys,项目名称:doc-linux,代码行数:55,


示例15: sock_bind

/* * binds a name to a socket. nothing much to do here since its the * protocol's responsibility to handle the local address */static intsock_bind(int fd, struct sockaddr *umyaddr, int addrlen){	struct socket *sock;	int i;	PRINTK("sys_bind: fd = %d/n", fd);	if (!(sock = sockfd_lookup(fd, NULL)))		return -EBADF;	if ((i = sock->ops->bind(sock, umyaddr, addrlen)) < 0) {		PRINTK("sys_bind: bind failed/n");		return i;	}	return 0;}
开发者ID:binsys,项目名称:doc-linux,代码行数:19,


示例16: sock_shutdown

/* 关闭套接字 */static intsock_shutdown(int fd, int how){  struct socket *sock;  struct file *file;  DPRINTF((net_debug, "NET: sock_shutdown(fd = %d, how = %d)/n", fd, how));  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  return(sock->ops->shutdown(sock, how));}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:16,


示例17: sock_send

static int sock_send(int fd, void * buff, int len, unsigned flags){  struct socket *sock;  struct file *file;  DPRINTF((net_debug,	"NET: sock_send(fd = %d, buff = %X, len = %d, flags = %X)/n",       							fd, buff, len, flags));  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  return(sock->ops->send(sock, buff, len, (file->f_flags & O_NONBLOCK), flags));}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:15,


示例18: sock_bind

/* * Bind a name to a socket. Nothing much to do here since its * the protocol's responsibility to handle the local address. */static intsock_bind(int fd, struct sockaddr *umyaddr, int addrlen){  struct socket *sock;  int i;  DPRINTF((net_debug, "NET: sock_bind: fd = %d/n", fd));  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  if ((i = sock->ops->bind(sock, umyaddr, addrlen)) < 0) {	DPRINTF((net_debug, "NET: sock_bind: bind failed/n"));	return(i);  }  return(0);}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:20,


示例19: sock_setsockopt

static intsock_setsockopt(int fd, int level, int optname, char *optval, int optlen){  struct socket *sock;  struct file *file;	  DPRINTF((net_debug, "NET: sock_setsockopt(fd=%d, level=%d, optname=%d,/n",							fd, level, optname));  DPRINTF((net_debug, "                     optval = %X, optlen = %d)/n",							optval, optlen));  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  return(sock->ops->setsockopt(sock, level, optname, optval, optlen));}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:17,


示例20: sock_listen

/* * Perform a listen. Basically, we allow the protocol to do anything * necessary for a listen, and if that works, we mark the socket as * ready for listening. */static intsock_listen(int fd, int backlog){  struct socket *sock;  DPRINTF((net_debug, "NET: sock_listen: fd = %d/n", fd));  if (fd < 0 || fd >= NR_OPEN || current->filp[fd] == NULL)								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  if (sock->state != SS_UNCONNECTED) {	DPRINTF((net_debug, "NET: sock_listen: socket isn't unconnected/n"));	return(-EINVAL);  }  if (sock->ops && sock->ops->listen) sock->ops->listen(sock, backlog);  sock->flags |= SO_ACCEPTCON;  return(0);}
开发者ID:DreamLiMu,项目名称:Linux-Kernel-Study,代码行数:22,


示例21: sys_shutdown

static intsys_shutdown( int fd, int how){	struct socket *sock;	struct file *file;	PRINTK("sys_shutdown (fd = %d, how = %d)/n",fd, how);	file = current->filp[fd];	if (fd < 0 || fd >= NR_OPEN || file == NULL)	  return (-EBADF);	if (!(sock = sockfd_lookup(fd, NULL)))		return (-ENOTSOCK);	return (sock->ops->shutdown (sock, how));}
开发者ID:binsys,项目名称:doc-linux,代码行数:18,


示例22: sock_recvfrom

static intsock_recvfrom(int fd, void * buff, int len, unsigned flags,	     struct sockaddr *addr, int *addr_len){  struct socket *sock;  struct file *file;  DPRINTF((net_debug,	"NET: sock_recvfrom(fd = %d, buff = %X, len = %d, flags = %X,"	" addr=%X, alen=%X/n", fd, buff, len, flags, addr, addr_len));  if (fd < 0 || fd >= NR_OPEN || ((file = current->filp[fd]) == NULL))								return(-EBADF);  if (!(sock = sockfd_lookup(fd, NULL))) return(-ENOTSOCK);  return(sock->ops->recvfrom(sock, buff, len, (file->f_flags & O_NONBLOCK),			     flags, addr, addr_len));}
开发者ID:wanggx,项目名称:Linux1.0,代码行数:18,


示例23: sys_getsockopt

static intsys_getsockopt (int fd, int level, int optname, char *optval, int *optlen){	struct socket *sock;	struct file *file;	PRINTK ("sys_getsockopt(fd=%d, level=%d, optname=%d,/n",fd, level,		optname);	PRINTK ("               optval = %X, optlen = %X)/n", optval, optlen);	if (fd < 0 || fd >= NR_OPEN || 	((file = current->filp[fd]) == NULL))	  return (-EBADF);	if (!(sock = sockfd_lookup(fd, NULL)))	    return (-ENOTSOCK);	    	return (0);	return (sock->ops->getsockopt (sock, level, optname, optval, optlen));}
开发者ID:binsys,项目名称:doc-linux,代码行数:19,


示例24: sockfd_lookup

struct socket *usnic_transport_get_socket(int sock_fd){	struct socket *sock;	int err;	char buf[25];	/* sockfd_lookup will internally do a fget */	sock = sockfd_lookup(sock_fd, &err);	if (!sock) {		usnic_err("Unable to lookup socket for fd %d with err %d/n",				sock_fd, err);		return ERR_PTR(-ENOENT);	}	usnic_transport_sock_to_str(buf, sizeof(buf), sock);	usnic_dbg("Get sock %s/n", buf);	return sock;}
开发者ID:168519,项目名称:linux,代码行数:19,


示例25: sock_connect

/* * attempt to connect to a socket with the server address. */static intsock_connect(int fd, struct sockaddr *uservaddr, int addrlen){	struct socket *sock;	struct file *file;	int i;	PRINTK("sys_connect: fd = %d/n", fd);	if (!(sock = sockfd_lookup(fd, &file)))		return -EBADF;	if (sock->state != SS_UNCONNECTED) {		PRINTK("sys_connect: socket not unconnected/n");		return -EINVAL;	}	i = sock->ops->connect(sock, uservaddr, addrlen, file->f_flags);	if (i < 0) {		PRINTK("sys_connect: connect failed/n");		return i;	}	return 0;}
开发者ID:binsys,项目名称:doc-linux,代码行数:24,


示例26: sys_sendto

static intsys_sendto( int fd, void * buff, int len, unsigned flags,	   struct sockaddr *addr, int addr_len){	struct socket *sock;	struct file *file;	PRINTK("sys_sendto (fd = %d, buff = %X, len = %d, flags = %X,"	       " addr=%X, alen = %d/n", fd, buff, len, flags, addr, addr_len);	if (fd < 0 || fd >= NR_OPEN || 	((file = current->filp[fd]) == NULL))	  return (-EBADF);	if (!(sock = sockfd_lookup(fd, NULL)))		return (-ENOTSOCK);	return (sock->ops->sendto (sock, buff, len,				   (file->f_flags & O_NONBLOCK),				   flags, addr, addr_len));}
开发者ID:binsys,项目名称:doc-linux,代码行数:21,


示例27: sock_listen

/* * perform a listen. basically, we allow the protocol to do anything * necessary for a listen, and if that works, we mark the socket as * ready for listening. */static intsock_listen(int fd, int backlog){	struct socket *sock;	PRINTK("sys_listen: fd = %d/n", fd);	if (!(sock = sockfd_lookup(fd, NULL)))		return -EBADF;	if (sock->state != SS_UNCONNECTED) {		PRINTK("sys_listen: socket isn't unconnected/n");		return -EINVAL;	}	if (sock->flags & SO_ACCEPTCON) {		PRINTK("sys_listen: socket already accepting connections!/n");		return -EINVAL;	}	if (sock->ops && sock->ops->listen)	  sock->ops->listen (sock, backlog);	sock->flags |= SO_ACCEPTCON;	return 0;}
开发者ID:binsys,项目名称:doc-linux,代码行数:26,



注:本文中的sockfd_lookup函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ sockfd_put函数代码示例
C++ socket_write_string函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。