python小代码_小小聊天室Python代码实现

相对于Java方式的聊天室,Python同样可以做得到。而且可以做的更加的优雅。想必少了那么多的各种流的Python Socket,你一定会喜欢的。

至于知识点相关的内容,这里就不多说了。

UDP方式

服务器端

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

# coding:utf-8

# __author__ = 'Mark sinoberg'

# __date__ = '2016/7/7'

# __Desc__ = 创建一个简单的套接字监听请求

import socket

HOST= '192.168.59.255'

PORT= 9998

s= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.bind(('',PORT))

print '套接字已启动!'

while True:

data,addr= s.recvfrom(1024)

print addr,str(' : ')+data

客户端

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

# coding:utf-8

# __author__ = 'Mark sinoberg'

# __date__ = '2016/7/7'

# __Desc__ = socket的客户端的简单实现

import socket

PORT= 9998

HOST= '192.168.59.255'

s= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

words= raw_input('Client:')

while words != 'quit':

s.sendto(words,(HOST,PORT))

words= raw_input('Client:')

s.close()

是不是很简单啊。我们需要注意的就是socket的第二个参数为SOCK_DGRAM。因为这和TCP方式的SOCK_STREAM 有所不同。

TCP方式

服务器端

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

# coding:utf-8

# __author__ = 'Mark sinoberg'

# __date__ = '2016/7/7'

# __Desc__ = 简单的tcpsocket的实现

from socketimport *

from timeimport ctime

HOST= ''

PORT= 9999

BUFFERSIZE= 1024

ADDRESS= (HOST,PORT)

s= socket(AF_INET,SOCK_STREAM)

s.bind(ADDRESS)

s.listen(5)

while True:

print 'Waiting for clients cennect!'

tcpclient,addr= s.accept()

print 'Connected By ',addr

while True:

try:

data= tcpclient.recv(BUFFERSIZE)

except Exception,e:

print e.message

tcpclient.close()

break

if not data:

print "No Data received!"

break

senddata= 'Hi,you send me:[%s]%s'%(ctime(),data.encode('utf8'))

tcpclient.send(senddata.encode('utf8'))

print addr,' Says:',ctime(),data.encode('utf8')

tcpclient.close()

s.close()

客户端

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

# coding:utf-8

# __author__ = 'Mark sinoberg'

# __date__ = '2016/7/7'

# __Desc__ = 简单的tcp socket客户端的实现

from socketimport *

class TcpClient:

# HOST = 'localhost'

PORT= 9999

HOST= '192.168.59.225'

BUFFSIZ= 1024

ADDR= (HOST,PORT)

def __init__(self):

self.client= socket(AF_INET,SOCK_STREAM)

self.client.connect((self.HOST,self.PORT))

while True:

senddata= raw_input('>>>')

if not senddata:

print 'Please input some words!\n>>>'

continue

if senddata== "quit":

break

self.client.send(senddata.encode('utf8'))

recvdata= self.client.recv(self.BUFFSIZ)

if not recvdata:

break

print recvdata.encode('utf8')

if __name__== "__main__":

client= TcpClient()

TCP方式演示结果:(注意先开启服务器端)

服务器端

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTCPServer.py

Waiting for clients cennect!

Connected By ('192.168.59.225', 63095)

('192.168.59.225', 63095) Says: Thu Jul 07 16:01:10 2016 Hello World

('192.168.59.225', 63095) Says: Thu Jul 07 16:01:15 2016 haode

No Data received!

Waiting for clients cennect!

客户端

D:\Software\Python2\python.exe E:/Code/Python/MyTestSet/sockettest/SimpleTcpClient.py

>>>Hello World

Hi,you send me:[Thu Jul 07 16:01:10 2016]Hello World

>>>

Please input some words!

>>>

>>>haode

Hi,you send me:[Thu Jul 07 16:01:15 2016]haode

>>>quit

Process finished with exit code 0

总结

简单的使用TCP或者是UDP确实很容易,然而要想更好的利用这两个协议,就需要好好的设计一番了。

这里我想强调的是,注意tcp和udp创建套接字时指定的参数即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://blog.csdn.net/marksinoberg/article/details/51852241

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值