Python写的简陋版一对一聊天工具,全双工
2024-10-19 14:27:48
好该睡觉了,明天还要上班~~~直接上代码,后面再总结
import threading
import os
import socket def RecvProcess ( UDP_Socket, LocalAddrInfo ):
print 'UDP Recver is UP'
while 1:
data, PeerAddr = UDP_Socket.recvfrom ( 1024 )
if data == 'local exit' and LocalAddrInfo == PeerAddr:
print 'RecvProcess was terminated!'
break
#data = raw_input ()
print '%s(MessageFrom %s:%d)' % ( data, PeerAddr[0], PeerAddr[1] ) if __name__ == '__main__':
#Create UDP socekt
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
#Get local machine name
myname = socket.getfqdn(socket.gethostname())
myaddr = socket.gethostbyname(myname)
addrinfo = ( myaddr, 5060 )
print myaddr
s.bind( addrinfo )
#Start the Recv process
threadrecv = threading.Thread ( target = RecvProcess, args = (s, addrinfo) )
threadrecv.start ()
while 1:
val = raw_input()
if val == 'exit':
s.sendto ( 'local exit', addrinfo )
break
s.sendto ( val, ( '192.168.3.36', 5060) )
print 'quit'
最新文章
- siteserver cms选择栏目搜索无效
- gbk和gb2312的区别
- [转]ASP.NET MVC 3 Razor + jqGrid 示例
- 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)
- 【uTenux实验】互斥体
- android 定时器的实现
- C#:屏幕显示区域问题
- 日常工作中使用的一些Mongodb语句
- Solr4.8.0源码分析(26)之Recovery失败造成的宕机原因分析
- 大学生程序猿IT情书“2014爱的告白挑战赛”获奖名单及优秀情书展示系列之 - 【IT术语】情书+【搞笑另类】情书
- Android studio 开发在真机测试
- sun.proxy.$Proxy0 cannot be cast to dao.impl.MyAdviceImpl
- String中的==与Empty
- 【Android Developers Training】 13. 支持不同平台版本
- Java 中的语法糖
- 案例学习总结:原生JS实现表格排序
- 同一容器中a标签比较多的情况下通过title属性值隐藏
- [十二省联考2019]D1T2字符串问题
- redhat 6 红帽6 Linux 网络配置
- maven 使用 国内镜像的方法 解决依赖下载慢