recv

记java重构python版bert-serving-client

守給你的承諾、 提交于 2019-12-05 21:49:58
背景 项目需要把bert-serving-client由python用java实现,因为java比python快一些,于是就开始了尝试 先上bert-as-service的github地址: https://github.com/hanxiao/bert-as-service 其中client的init.py文件地址: https://github.com/hanxiao/bert-as-service/blob/master/client/bert_serving/client/__init__.py 主要实现其中encode、fetch、fetchAll和encodeAsync 导包 bertClient主要用到zeroMq和json,前者用来提供和服务端的连接,后者格式化传输数据。两者pom依赖如下 <dependency> <groupId>org.zeromq</groupId> <artifactId>jeromq</artifactId> <version>0.5.1</version> </dependency> <!-- for the latest SNAPSHOT --> <dependency> <groupId>org.zeromq</groupId> <artifactId>jeromq</artifactId> <version>0.5.2

How to detect that the client is still connected (and not hung-up) using recv()?

心不动则不痛 提交于 2019-12-05 19:09:50
I have written a multiclient Server program in C on SuSE Linux Enterprise Server 12.3 (x86_64) , I am using one thread per client to receive data. My problem is: I am using one terminal to run the server, and using several other terminals to telnet to my server (as client). I have used recv() in the server to receive data from client, I have also applied checks for return value of recv() i.e. Error on -1 ; Conn. Closed on 0 & Normal operation else. I have not used any flags in recv() . My program works fine if I just close the telnet session (i.e. disconnect client) normally using Ctrl+] and

tcp socket学习

╄→尐↘猪︶ㄣ 提交于 2019-12-05 18:14:41
更新一波学的socket编程,socket还是比较重要的,探测端口,连接服务底层都是socket编程。tcp有server 和 client。client和udp发送差不多。 server端是建立了两个连接,一个是listen监听连接,如果有人连接到了这个端口,那么新创建一个连接,新创建的连接和这个人保持通信。旧的连接可以一直监听。 简单点总结就是Listen-->accept-->recv(1024)-->新连接close()-->旧连接close() #!/usr/bin/env python #-*- coding:utf-8 -*- # @Author : "你们的饭不好吃" import socket tcp_server = socket.socket(socket.AF_INET , socket.SOCK_STREAM) # 绑定端口 tcp_server.bind(("",8888)) # 服务器是8888端口 # 监听端口 tcp_server.listen(127) print("----------------------1---------------------") # 接受到电话 new_client,client_addr = tcp_server.accept() print("-----------------------2-----------

黏包问题以及后续

孤者浪人 提交于 2019-12-05 15:53:14
黏包 黏包现象 让我们基于tcp先制作一个远程执行命令的程序(命令ls -l ;ifconfig; pwd) res=subprocess.Popen(cmd.decode('utf-8'), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 的结果的编码是以当前所在的系统为准的,如果是windows,那么res.stdout.read()读出的就是GBK编码的,在接收端需要用GBK解码 且只能从管道里读一次结果 同时执行多条命令之后,得到的结果很可能只有一部分,在执行其他命令的时候又接收到之前执行的另外一部分结果,这种显现就是黏包。 #_*_coding:utf-8_*_ from socket import * import subprocess ip_port=('127.0.0.1',8888) BUFSIZE=1024 tcp_socket_server=socket(AF_INET,SOCK_STREAM) tcp_socket_server.setsockopt(SOL_SOCKET,SO_REUSEADDR,1) tcp_socket_server.bind(ip_port) tcp_socket_server.listen(5) while True: conn,addr=tcp_socket

socket

元气小坏坏 提交于 2019-12-05 15:51:17
socket recv 和 recvfrom udp编程中 socket接受数据用recvfrom tcp中用recv udp 接受端口时recvfrom tcp用accept sk.recv(bufsize[,flag]) 接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。 sk.recvfrom(bufsize[.flag])  与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。 socket参数的详解 socket.socket(family=AF_INET,type=SOCK_STREAM,proto=0,fileno=None) 创建socket对象的参数说明: family 地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。 (AF_UNIX 域实际上是使用本地 socket 文件来通信) type 套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。 SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。 SOCK_DGRAM 是基于UDP的

C语言实现FTP服务器

微笑、不失礼 提交于 2019-12-05 15:20:26
公共部分代码 /* common.h */ #ifndef COMMON_H #define COMMON_H #include <arpa/inet.h> #include <ctype.h> #include <dirent.h> #include <errno.h> #include <fcntl.h> #include <netdb.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #define DEBUG 1 #define MAXSIZE 512 #define CLIENT_PORT_ID 30020 struct command { char arg[255]; char code[5]; }; int socket_create(int port); int socket_accept(int sock_listen); int socket_connect(int port, char *host); int recv_data(int sockfd, char*

2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序

筅森魡賤 提交于 2019-12-05 11:57:34
2019-2020-1 20175304 20175303 20175327 20175335 实验三-并发程序 实验过程 实验三-并发程序-1 实验要求 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 实验步骤 首先先学习一下命令wc使用 1.在命令行输入 man wc 2.使用方法 3.部分实例 (1)统计行数 $wc –l file (2)统计单词数 $wc –w file (3)统计字符数 $wc –c file (4)统计流中的字符数 $echo –n 1234 | wc –c 基于Linux Socket程序设计实现wc Sever端代码: #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #include<unistd.h> #define SERVER

2019-2020-1 20175221 20175225 20175226 实验三 实时系统

老子叫甜甜 提交于 2019-12-05 11:48:37
2019-2020-1 20175221 20175225 20175226 实验三 实时系统 实验要求 任务一 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 上方提交代码 附件提交测试截图,至少要测试附件中的两个文件 任务二 使用多线程实现wc服务器并使用同步互斥机制保证计数正确 上方提交代码 下方提交测试 对比单线程版本的性能,并分析原因 实验步骤 任务一 先使用 man wc 了解wc命令的功能与用法 在了解了各参数的作用后,对 test1.txt 和 test2.txt 分别试验 wc wc -w 功能 用socket编程实现 客户端 服务器端 实验代码 客户端 #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175225 #define BUFFER_SIZE 1024

2019-2020-1 20175335 20175303 20175304 20275327 实验三 并发程序

≡放荡痞女 提交于 2019-12-05 11:47:36
2019-2020-1 20175335 20175303 20175304 20275327 实验三 并发程序 小组成员: 20175335、20175303、20175304、20175327 实验目的: 并发程序 一、实验三-并发程序-1 学习使用Linux命令wc(1) 基于Linux Socket程序设计实现wc(1)服务器(端口号是你学号的后6位)和客户端 客户端传一个文本文件给服务器 服务器返加文本文件中的单词数 实验过程 wc功能:统计指定文件中的字节数、字数、行数,并将统计结果显示输出。 wc参数: -c 统计字节数。 -l 统计行数。 -m 统计字符数。 -w 统计字数。 -L 打印最长行的长度。 socket编程模型: 实验代码如下: server.c服务器 #include<netinet/in.h> // sockaddr_in #include<sys/types.h> // socket #include<sys/socket.h> // socket #include<stdio.h> // printf #include<stdlib.h> // exit #include<string.h> // bzero #define SERVER_PORT 175335 #define LENGTH_OF_LISTEN_QUEUE 20 #define

1.Python网络编程_UDP

£可爱£侵袭症+ 提交于 2019-12-05 10:53:00
1 # -*- coding: utf-8 -*- 2 #2019-11-24 3 #服务器端 4 5 import socket 6 7 def Recv(): 8 udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 9 10 # ip地址和端口号,ip一般不用写,表示本机的任何一个ip 11 local_addr=('',7788) 12 udp_socket.bind(local_addr) 13 while True: 14 print("OK!\n") 15 #等待接收方发送的数据 16 recv_data=udp_socket.recvfrom(1024) #1024表示本次接收的最大字节数 17 recv_msg=recv_data[0] 18 recv_addr=recv_data[1] 19 #显示收到的数据 20 if recv_msg.decode("gbk")=="exit": 21 print("通信结束!") 22 return 23 print("%s: %s\n"%(str(recv_addr),recv_msg.decode("gbk"))) 24 print(type(recv_addr)) 25 #关闭套接字 26 udp_socket.close() 27 28 if _