Server端代码:
#include<linux/in.h>
#include<linux/inet.h>
#include<linux/socket.h>
#include<net/sock.h>
#include<linux/init.h>
#include<linux/module.h>
int myserver(void){
struct socket *sock,*client_sock;
struct sockaddr_in s_addr;
unsigned short portnum=0x8870;
int ret=0;
memset(&s_addr,0,sizeof(s_addr));
s_addr.sin_family=AF_INET;
s_addr.sin_port=htons(portnum);
s_addr.sin_addr.s_addr=htonl(INADDR_ANY);
sock=(struct socket *)kmalloc(sizeof(struct socket),GFP_KERNEL);
client_sock=(struct socket *)kmalloc(sizeof(struct socket),GFP_KERNEL);
/*create a socket*/
ret=sock_create_kern(AF_INET, SOCK_STREAM,0,&sock);
if(ret){
printk("server:socket_create error!\n");
}
printk("server:socket_create ok!\n");
/*set the socket can be reused*/
int val=1;
ret= kernel_setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,(char *)&val,sizeof(val));
if(ret){
printk("kernel_

本文详细阐述了Linux系统中关于内核态Socket编程的一些常见错误,并提供了修正这些错误的方法,旨在帮助开发者更好地理解和实现内核态下的Socket通信。
最低0.47元/天 解锁文章
890





