linux编程中,以下哪个tcp的套接字选项与nagle算法的开启和关闭从函数调用上来分析(msdn):一旦完成了套接字的连接,应当将套接字关闭,并且释放其套接字句柄所占用的所有资源 。真正释放一个已经打开的套接字句柄的资源直接调用closesocket即可,但要明白closesocket的调用可能会带来负面影响,具体的影响和...
linux 如何用make命令带参数详解,什么意思1.socket是属于LINUX下的进程间通信的一种方式BSD,(socket)套接字 。
既可以实现同一台主机间的进程间通信,也可以实现不同主机间的进程间通信,
也是操作系统给应用程序提供的用于网络通信的接口 。
在Linux下,由于一切皆文件,所以socket也是一种文件 。可以通过文件描述符去操作 。
2.IP号linux命令关闭套接字:主机的唯一标识 。
子网掩码:用于判断数据包向外网还是向内网发送 。
IP地址在使用必须转换为二进制形式(inet_addr) 。
对应的端口号转换(htons)linux命令关闭套接字;
IP区分主机,端口号区分进程 。
3.客户端的创建(对应的函数)
(1)创建SOCKET套接字 (socket)
(2)绑定地址信息(bind)(这一步骤可以省略 , 系统会自动分配)
(3)发送连接请求(connect)
(4)收发消息(send/recv)
(5)关闭套接字 (close)
4.服务器的创建(对应的函数)
(1)创建SOCKET套接字 (socket)
(2)绑定地址信息(bind)(服务器对应的IP地址和端口号)
(3)创建一个监听队列(listen)
(4)接受连接请求 (accept)
(5)收发消息 (send/recv)
(6)关闭套接字 (close)
下面就是客户端的代码如下:
#include stdio.h
#include sys/types.h
#include sys/socket.h
#include string.h
#include unistd.h
#include arpa/inet.h
int main()
{
//定义Internet协议结构,客户端的IP信息
struct sockaddr_in myaddr;
memset(myaddr,0,sizeof(myaddr));
myaddr.sin_family = PF_INET;
myaddr.sin_port = htons(1314);
myaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
//1.创建套接字
int clientId = socket(PF_INET,SOCK_STREAM,0);
if(clientId0)
{
perror("socket\n");
return-1;
}
printf("socket ok\n");
//2发起链接请求
int ret = connect(clientId,(struct sockaddr *)myaddr,sizeof(myaddr));
if(ret 0)
{
perror("connect\n");
close(clientId);
return -1;
}
printf("connect ok\n");
// 3接收消息
while(1)
{
char buf[1024];
memset(buf,0,1024);
ret = recv(clientId,buf,sizeof(buf),0);
if(ret0)
{
perror("recv\n");
close(clientId);
return -1;
}
printf("received from xldserver:%s\n",buf);
memset(buf,0,1024);
printf("xldclient: ");
gets(buf);
if(strcmp(buf,"quit")==0)
{
break;
}
ret=send(clientId,buf,sizeof(buf),0);
if(ret0)
{
perror("send\n");
close(clientId);
return -1;
}
}
//4.关闭套接字
close(clientId);
return 0;
}
下面是服务器的具体代码
#include stdio.h
#include sys/types.h
#include sys/socket.h
#include string.h
#include arpa/inet.h
#include unistd.h
int main()
{
//定义Internet协议结构,服务器的端口号和IP地址
struct sockaddr_in myaddr;
memset(myaddr,0,sizeof(myaddr));
myaddr.sin_family = PF_INET;
myaddr.sin_port = htons(1314);
myaddr.sin_addr.s_addr = inet_addr("127.0.0.1");
//1.创建套接字
int uouo123 = socket(PF_INET,SOCK_STREAM,0);
推荐阅读
- 显卡怎么处理翻新问题,显卡怎么处理翻新问题视频
- 剪辑视频音乐要什么格式,剪辑恐怖视频用什么音乐
- 飞利浦店面如何推广的,飞利浦推广方案
- 手机yy怎么直播王者,怎么用手机在yy直播王者荣耀
- 常用linux命令10个 十个常用linux命令
- css里属性英文,css的属性和属性值有哪些
- 小米手机安装记录怎么恢复,小米手机安装记录删除了怎么恢复
- 视频号怎么开旗舰店教程,视频号怎么开旗舰店教程下载
- c语言递归函数的特点 c语言递归函数的特点有