# python_c_chat
**Repository Path**: incline-the-wind/python_c_chat
## Basic Information
- **Project Name**: python_c_chat
- **Description**: 项目立足于两种语言的套接字机制,探索不同计算机语言之间的交互实践(Python和C)
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-06-26
- **Last Updated**: 2021-06-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 项目简介
大部分情况,开发者都是在一种语言环境或者几种有着成熟的接口规范的语言环境下工作,现实中,更多计算机语言之间却没有太多的交集,但是有确实是存在着规范提供了这种可能性。
项目试图探索很少交互的语言之间交互方式。Python的底层虽然是基于C语言的,但是二者的应用领域却鲜有重叠,二则的交互会是一个比较经典能说明项目目标的例子。项目立足于二者**套接字**机制,来实现这两种语言之间的数据交流。
## 主要文件说明
- server.py应用程序扮演服务器的角色,需要最先运行
```bash
python server.py
```
- client.c应用程序时客户端,需要连接python_end.py服务器
```bash
# 执行client.c
gcc client_for_linux.c -o client -lpthread
```
## 项目演示
- 服务器端
- 客户端
---
# A chat Based on `C` and `Python`
不同编程语言下使用套接字相互通信
# 安装与使用
**For Linux**
gcc client_for_linux.c -o client -lpthread
*使用gcc编译器生成可执行文件`client`*
*因为使用了多线程,所以需要加上`-lpthread`参数*
当服务器端开启,执行
./client
命令即可进入聊天室
**For Windows**
~~敬请期待~~
**平台通用**
~~将在以后版本中使用QT进行跨平台的图形化界面开发~~
# 版本更新
2. 可更改IP地址与PORT端口
1. 增加数据存储
***
# 套接字
## Linux C语言
Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 read() 可以从套接字中读取数据。
ssize_t write(int fd, const void *buf, size_t nbytes);
*fd 为要写入的文件的描述符,buf 为要写入的数据的缓冲区地址,nbytes 为要写入的数据的字节数*
[链接名称](http://gitcafe.com)
引用
> Linux 套接字 http://c.biancheng.net/cpp/html/3037.html
> Linux C语言 多线程 https://zhuanlan.zhihu.com/p/97418361
***
``
线程
```C
pthread_t id1; // 定义一个线程 ID
pthread_attr_t id1_attr; //定义属性变量
pthread_attr_init(&id1_attr);
pthread_attr_setscope(&id1_attr, PTHREAD_SCOPE_SYSTEM);
pthread_create(&id1, &id1_attr, (void*)&chatSend, NULL);
pthread_join(id1, NULL);
```
表格
表头 | 表头
-|-
单元格内容 | 单元格内容
单元格内容l | 单元格内容