首先声明下,下面的答案是从博客上粘过来了,因为以前自己写的时候也参考这个写的。

基于UDP的聊天程序服务器端源程序:

#include "winsock2.h"

#include "stdio.h"

void main()

{

//加载套接字(winsock)库,加载这段代码拷贝于MSDN中WSAStartup的介绍

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 ); //版本号为1.1

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );

return;

}

//创建套接字

//注意第二个参数和TCP设置不同

SOCKET sockServer=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN addrServer; //设置服务器端套接字的地址结构的相关属性

addrServer.sin_addr.S_un.S_addr=htonl(INADDR_ANY); //设置IP

addrServer.sin_family=AF_INET;

addrServer.sin_port=htons(6000); //设置端口号

//将套接字和服务器地址结构绑定

bind(sockServer,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));

SOCKADDR_IN addrClient;

int len=sizeof(SOCKADDR);

char recvBuf[100];

char tempBuf[100];

char sendBuf[100];

while(1)

{

//从客户端接收数据

int result=recvfrom(sockServer,recvBuf,100,0,(SOCKADDR*)&addrClient,&len);

if(result==SOCKET_ERROR)

{

int errCode=WSAGetLastError();

printf("error:%d",errCode);

break; //退出循环

}

else

{

if(recvBuf[0]=='q') //对方请求退出

{

//同样将退出请求发送回去

sendto(sockServer,"q",strlen("q")+1,0,(SOCKADDR*)& addrClient,sizeof(SOCKADDR));

printf("the chat end!");

break;

}

else

{

//将对方发送过来的信息前段加上IP地址进行输出

sprintf(tempBuf,"%s said:%s",inet_ntoa(addrClient.sin_addr),recvBuf);

printf("%s ",tempBuf);

//将用户的键盘输入发送到对方

printf("pleas input the message: ");

gets(sendBuf); //得到键盘输入内容 sendto(sockServer,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)& addrClient,sizeof(SOCKADDR));

}

}

}

closesocket(sockServer);

WSACleanup();

}

基于UDP的聊天程序客户端端源程序:

#include "winsock2.h"

#include "stdio.h"

void main()

{

//加载套接字(winsock)库,加载这段代码拷贝于MSDN中WSAStartup的介绍

WORD wVersionRequested;

WSADATA wsaData;

int err;

wVersionRequested = MAKEWORD( 1, 1 ); //版本号为1.1

err = WSAStartup( wVersionRequested, &wsaData );

if ( err != 0 ) {

return;

}

if ( LOBYTE( wsaData.wVersion ) != 1 ||

HIBYTE( wsaData.wVersion ) != 1 ) {

WSACleanup( );

return;

}

//创建套接字

SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); //注意第二个参数和TCP设置不同

SOCKADDR_IN addrServer; //服务器地址结构

addrServer.sin_addr.S_un.S_addr=inet_addr("127.0.0.1"); //服务器地址

addrServer.sin_family=AF_INET;

addrServer.sin_port=htons(6000); //服务器端口号

char tempBuf[100];

char recvBuf[100];

char sendBuf[100];

int len=sizeof(SOCKADDR);

while(1)

{

printf("plese input the message: ");

gets(sendBuf); //得到用户的键盘输入

sendto(sockClient,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));

int result=recvfrom(sockClient,recvBuf,100,0,(SOCKADDR*)&addrServer,&len);

if(result==SOCKET_ERROR)

{

int errCode=WSAGetLastError();

printf("error:%d",errCode);

break; //退出循环

}

else

{

if(recvBuf[0]=='q') //对方请求退出

{

//同样将退出请求发送回去

sendto(sockClient,"q",strlen("q")+1,0,(SOCKADDR*)&addrServer,sizeof(SOCKADDR));

printf("the chat end!");

break;

}

else

{

//将对方发送过来的信息前段加上IP地址进行输出

sprintf(tempBuf,"%s said:%s",inet_ntoa(addrServer.sin_addr),recvBuf);

printf("%s ",tempBuf);

}

}

}

closesocket(sockClient);

WSACleanup();

}

取消

评论

python能编写手机软件-怎么用Python编写一个手机聊天软件或程序相关推荐

  1. 华为首款5G折叠屏手机MateX,可否成为下一个手机发展方向?

    就在昨日,西班牙巴塞罗那,在2019年MWC期间华为召开名为"connecting the future"发布会,正式发布了5G折叠屏手机HUAWEI Mate X和无边框笔记本电 ...

  2. 【亡羊补牢】计算机网络灵魂之问 第9期 如果让你做一个视频聊天软件,你用tcp还是udp?为什么?

    这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues中通过 Labels 标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利! ...

  3. python黑科技:Python大佬用20行代码带你打造一个微信聊天机器人,真神了~

    如何用20行Python代码打造一个微信群聊助手? 1.安装python环境 2.安装python的itchat库 3.安装itchat库 4.Linux 5.申请图灵机器人API和key 6.编写p ...

  4. 手机电话本怎么导入另一个手机

    随着社会的发展和科技的进步,手机通讯录都会存好多好友的联系方式,那么怎么将手机的通讯录倒到另一部手机呢?以下是操作步骤: 1.两部手机分别下载安装<QQ同步助手>. 2.在有通讯录的手机上 ...

  5. 手机短信转发到另一个手机接收_怎么把手机号码导入另一个手机中(新手机是华为的,旧手机是三星的)...

    在日常生活中我们每个人都有手机,有时会有两部以上手机,当我们想要换个手机的时候,就会想我的电话号码怎么才能导入到新手机上,对于手机开发和手机维修人员来说,这就是小菜,对于我们大众来说就不是那么容易了, ...

  6. 手机声音同步到另一部手机_手机照片怎么传到另一个手机?用这一招,超简单!...

    手机里的照片怎么传到另一个手机里?在我们更换手机之后,不少人是想要将旧手机里的照片导入新手机的,将大量的照片进行转移,有什么快速的方法么?今天小编按照之前尝试过的几种方法给大家讲下详细的步骤,希望能够 ...

  7. 最近打算再写一个 局域网聊天软件

    在1981年,nikon对全线ai镜头卡口进行了修改,局域网聊天软件 以便用机械方式实现光圈优先的局域网聊天软件功能,这些修改后的新镜头就是ai-s卡口nikkor镜头.识别它的方法是光圈环上最小光圈 ...

  8. 低格硬盘用什么软件_越南人用的什么聊天软件,和越南人交流用什么软件翻译...

    很多单身的朋友想认识美丽的越南女孩,期待一场跨国恋情.今天就给大家介绍下越南人使用的聊天软件.Facebook,Zalo和和Ins为越南市场三大社交媒体应用,Facebook的使用范围比较广.而Zal ...

  9. 利用Qt制作一个简易聊天软件

    需求分析 即时通讯软件是通过即时通讯技术来实现在线聊天.交流的软件.需要完成基本的通信需求及工作场景需求. 架构分析 截图展示 项目简介 我们编写的即时通信软件叫做SeeU,它是一款基于Qt开发平台, ...

  10. 手机短信转发到另一个手机接收_吓人!手机收到“处理尸体”短信 警方调查揭开真相!...

    如果突然收到一条 让你"处理尸体"的手机短信, 你会如何处理? 近日,江津区的18岁小伙小郭就遇到此事,他与对方联系无果后,选择了立即报警求助.警方调查后发现,这原是一场恶作剧. ...

最新文章

  1. SDN教育城域网解决方案
  2. SQL语言之数据控制语言(Oracle)
  3. 【AI不惑境】移动端高效网络,卷积拆分和分组的精髓
  4. 转:QQ登录时错误码说明及解决办法
  5. matlab 韩明距离_使用Matlab计算各种距离Distance
  6. linux命令行翻页
  7. 升级LINUX内核(支持8G内存)的命令
  8. 【SpringBoot_ANNOTATIONS】组件注册 04 @Scope 设置组件作用域
  9. Win 10系统无法连接蓝牙耳机问题
  10. 计算机数字雨教程视频,股票配资火爆cmd什么意思(cmd命令数字雨)
  11. 批量修改后缀名的方法
  12. linux设置双屏拼接_Linux 与Windows(A卡、N卡)下折腾双屏、3屏拼接
  13. 从一个编程老菜鸟来看Delphi的优点
  14. 聊天系统服务器,聊天系统服务器
  15. 对Autorun.inf类U盘病毒的攻防经验总结
  16. incsgo 可直接取回最好的国内CSGO饰品皮肤开箱网站
  17. python学习路线图(初级阶段,中级阶段,高级阶段)
  18. 论文笔记Improving Multi-hop Knowledge Base Question Answering by Learning Intermediate Supervision Signa
  19. 五. Tomcat 常见问题解决及面试题
  20. 计算机信息技术与幼儿教育论文,信息技术应用于幼儿教育论文

热门文章

  1. 【php】php5.0以上,instanceof 用法
  2. Vofuria 的 imageTarget 的图片无法显示或者显示为空白
  3. ArcGIS Engine中空间参照(地理坐标)相关方法总结
  4. VIM 多行注释与取消
  5. UIView上的控件使用push方法跳转
  6. DevExpress GridControl使用(二)
  7. Synchronized同步的考虑
  8. ubuntu 网卡双网口 配置_Ubuntu 18.04 设置多网卡多端口聚合
  9. python安装步骤图解-Python安装与卸载流程详细步骤(图解)
  10. python手机版安卓-手机随时随地写Python,还可以开发安卓APP,太厉害了!