项目实训(9)socket部分1

本文介绍了Socket通信的基础知识,包括Socket的概念、TCP/IP协议,以及服务端和客户端的基本编程步骤。通过示例代码展示了如何创建一个简单的局域网聊天应用,帮助读者深入理解Socket通信。
摘要由CSDN通过智能技术生成

一、序言:

进一步的设计工作需要涉及到使用socket的工作;

项目分为服务端和用户端;

ps:因为队友(佬)已经承担的工作可以借用到自己的服务端上来,所以不需要自己再设计服务端了,但是学习还是有必要继续完成的。

二、socket简介:

1是什么:

是计算机之间进行通信一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。即Socket提供了操作上述特殊文件的接口.使用这些接口可以实现网络编程。

2如何使用:

通信方式包含了本地的和网络的。

前者我在“操作系统”一课已经有所学习,后者则于计算机网络中学习过。

我们这里再简单介绍一下后者:网络通信。

在网络通信的过程中,我们需要解决以下的问题:

  • 如何识别主机?
  • 如何识别进程?

答:在网络中,进程通过ip地址,协议,端口来进行通信。

这里就想到了经典的TCP/IP协议。

即有,“三次握手,四次挥手。”

三、TCP/IP

tcp 编程一般的步骤:
server(服务端)
1.new 个 socket
2.bind (IP,port)
3.listen,等待客户端的连接
4.accept 接受客户端的连接
5.接收(recv) 发送数据(send)
6.关闭连接

client(客户端)
1.new 个 socket
2.bind(ip,port)
3.connect (server.ip,server,port)
4.recv() /send()
5.关闭连接

这是搭建原生的socket系统的基本途径。

这部分的介绍非常概要。在实际工作的过程中要注意灵活改变。

需要特别说明的是,在不同的操作系统中,socket的搭建并不一样。

我们是在linux环境下搭建的,因此需要对应的函数调用。

四、代码尝试demo

来自知乎的学习例子。可以阅读来借鉴。

基本的局域网聊天

局域网TCP服务端:

实现的功能是client到server的半双工通信,server只能接受接收client发送过来的消息,但是不能向client发送消息。

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <sys/shm.h>
#include <thread>
#include <iostream>
#define PORT 7000
#define QUEUE 20//连接请求队列
int conn;
void thread_task()
{
    
}
 
int main()
{
    
 //printf("%d\n",AF_INET);//IPv4协议
 printf("%d\n",SOCK_STREAM);//字节流套接字
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值