socket

监控平台中需要无验证通过网络来传输数据,因此需要用到socket编程,重拾它!

概念:socket不是什么协议,而是对于网络层以及运输层的协议的抽象通信接口

socket的server端和client端语言无关,他们传输的只是数据

直接无节操上代码:

server端(python):

import socket

if __name__=='__main__':
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   sock.bind(('172.16.9.158',10081))
   sock.listen(5)
   while True:
        connection,address = sock.accept()
        try:
            connection.settimeout(5)
            buf = connection.recv(1024)
            if buf == '1':
                print 'welcome to server!'
            else:
                print buf+' '+str(address)
        except socket.timeout:
            print 'connection receive fail'
        connection.close();

client端(python):

import socket
import time
import thread


def timer(i, interval):
    while True:
        ts = 'thread: ' + str(i) +"-"+ str(interval)
        print ts
        time.sleep(interval)


def exam(times):
    for i in range(times):
        print i
        thread.start_new_thread(timer, (i,(i*2 + 1)))


def connection(name):
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   addr = ('172.16.9.158',10080)
   print name
   sock.connect(addr)
   sock.send('i wanna see the true'+str(name))
   sock.close()


def test(times):
   for i in range(times):
       thread.start_new_thread(connection, (i,))




if __name__=='__main__':
   test(4)
   time.sleep(20)

server端(php):

<?php
$tcp = getprotobyname("tcp");
$socket = socket_create(AF_INET, SOCK_STREAM, $tcp);
socket_bind($socket, '172.16.9.158', '10080');
socket_listen($socket, 4);

$buffer = "connect";
while(TRUE){

        //接收一个请求
        $connection = socket_accept($socket);
        if(!$connection){
                echo "connect fail\n";
        }else{
                echo "Socket connected!\n";
                //向客户端发送数据
                /*
                if($buffer != ""){
                        echo "echo data to client\n";
                        socket_write($socket, $buffer."\n");
                        echo "Wrote to socket\n";
                } else{
                        echo "no data in the buffer\n";
                }
                */
                //接收服务器端发送的数据,并返回状态信息
                while($data = socket_read($connection, 1024, PHP_BINARY_READ)){
                        printf("Buffer: ".$data."\n");
                        socket_write($connection, "Information Received!");
                }
        }

        socket_close($connection);
        printf("Closed the socket\n");
}
?>
client端(python):

import socket
import time
import thread

def timer(i, interval):
    while True:
        ts = 'thread: ' + str(i) +"-"+ str(interval)
        print ts
        time.sleep(interval)

def exam(times):
    for i in range(times):
        print i
        thread.start_new_thread(timer, (i,(i*2 + 1)))

def connection(name):
   sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   addr = ('172.16.9.158',10080)
   print name
   sock.connect(addr)
   sock.send('i wanna see the true'+str(name))
   sock.close()

def test(times):
   for i in range(times):
       thread.start_new_thread(connection, (i,))


if __name__=='__main__':
   test(4)
   time.sleep(20)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值