소켓 프로그래밍(TCP)

3661 단어
json 모듈 보충
json이 저장한 형식에서 키 값은 반드시 더블 인덱스로 구분해야 한다
import json
#     json     
dic = {'name': 'lqz', 'xx': False, 'yy': None}
print(type(dic)) #    

dic_s = json.dumps(dic)
#json     
print(type(dic_s))#     (json  )

dic_s2 = str(dic)
print(dic_s2)
print(type(dic_s2)) #    ,    json      

json.dumps() #       (json)
json.dump() #       (json),      

json.loads() # json         
json.load() #     json         


#  json       ,    
ss = 'falseee'#   ,         ,(false,null,    {},  []  )
ss = 'false'#     bool 
print(json.loads(ss))
print(type(json.loads(ss)))

ss = {'name': 'lqz', 'xx':False, "yy":None}
print(json.dumps(ss))
print(type(json.dumps(ss)))
'''
{"name": "lqz", "xx": false, "yy": null}

'''

소켓 프로그래밍(TCP)
###   
import socket

#   ,       socket  
server = socket.socket()

#     ,     
server.bind(('127.0.0.1', 8003))

#  ,         
server.listen(5)

#    
while True:
    #            ,      ,
    #     ,    
    conn, addr = server.accept()

    #    
    while True:
        #   ,       
        data = conn.recv(1024)
        conn.send(data.upper())
    conn.close()
server.close()


#   

import socket
client = socket.socket()
client.connect(('127.0.0.1', 8003))
#    
while True:
    msg = input('>>>:')
    client.send(msg.encode('utf8'))
    #client.send(bytes(msg, 'utf8')) #        
    data = client.recv(1024)
    print(data)
client.close()


소켓 프로그래밍(TCP)(스티커 문제 해결)
패킷 문제: 제 이해는 TCP 프로토콜은 흐르는 물처럼 연속적이기 때문에 제 데이터 꼬리가 뒤에 있는 데이터 헤드와 연결되어 패킷을 형성할 수 있습니다.(TCP 프로토콜은 데이터 양이 적고 시간 간격이 짧은 데이터를 한꺼번에 보낸다)
자세한 내용은 >>>https://www.cnblogs.com/nickchen121/p/11031027.html
#   _  

import socket
import struct
import json
client =socket.socket()
client.connect(('127.0.0.1', 8003))
while True: #    
    msg=input('    ?>>:')
    #  4   ,       
    head_len=struct.unpack('i',client.recv(4))[0]
    #    
    dic=json.loads(client.recv(head_len))
    l=dic['size']
    name=dic['name']
    count=0
    data=b''
    with open(name,'wb') as f:
        while count=1024:
                    data_temp=client.recv(1024)
                    print(data_temp)

                else:
                    data_temp=client.recv(l - count)
            data+=data_temp
            count+=len(data_temp)
        f.write(data)


    print('    ')
client.close()



#   _  

import socket
import os
import json
import struct
server=socket.socket()
server.bind(('127.0.0.1', 8003))
server.listen(5)
while True: #    
    #            ,      ,    ,    
    conn,addr=server.accept()

    while True: #    
        #     
        # {size:os.path.getsize(),name:'333.py',md5:asdfasdfasfd}
        #        
        dic={'size':os.path.getsize('json  .py'),'name':'xxxxxx.py'}
        #  bytes  
        dic_b=bytes(json.dumps(dic),'utf-8')
        #    
        dic_b_len=len(dic_b)
        obj=struct.pack('i',dic_b_len)
        #      
        conn.send(obj)
        #     
        conn.send(dic_b)
        #   +    ,         rb
        with open('json  .py','rb') as f:
            # conn.send(f.read())
            # f      ,    
            for line in f:
                conn.send(line)
    conn.close()
server.close()





좋은 웹페이지 즐겨찾기