
pythonsocket使用request方法获取数据代码。socketsocket函数的前两个参数的默认值是socketAF_INET和socketSOCK_STREAM,创建TCPsocket时可以直接写成socketsocket()。然后使用request方法就可以获取数据代码了。
理论上传输数据不会很大,常用的一次webservice数据交互,大小应该不会超过100K,
具体是否存在大小限制,这个要看你具体的限制了。
比如我发送一个请求,请求内容是一个人的身份z号码,你给我返回这个人的所有信息,如果这些信息有1G,我觉得理论上实现起来没有问题,但是从软件设计角度,这样来设计就是有缺陷的,
1G的数据需要传很久的,按照常用硬盘的读取速度80M来说,也需要13秒的时间才能传完,而且对带宽的要求还必须是千兆的网络。
你搞清楚邮件收发协议
发:smtp
收:pop3 一般的收件协议,它是直接把服务器上的信移动到客户端
收:imap 这个是VIP邮箱协议,它是把服务器上的信复制到客户端,有备分的
其次,使用POP3协议来从服务器读取数据,首先以只读方式打开收件箱,从服务器获取邮件列表,如果使用者选择列表中的邮件进行存放至本地 *** 作,那么先获取该邮件的发送邮件地址,获取主题,获取信息(正文),接收附件,一一保存之后进行显示。
这样才可以正确从服务器上下载邮件~~
代码我就不提供了,网上应该到处都是,实在不懂就查查资料
一句老话,知己知彼方能百战不殆!
你先去了解下基于POP3,SMTP这类的邮件服务器运行机制吧!~
>
1、Qt 作为一个通用开发库,提供了跨平台的文件 *** 作能力。文件 *** 作是应用程序必不可少的部分。
2、Qt5增加了QFileDevice类。途中所涉及的类及其用途简要说明如下:
· QFlie:访问本地文件或者嵌入资源;
· QTemporaryFile:创建和访问本地文件系统的临时文件;
· QBuffer:读写QByteArray;
· QProcess:运行外部程序,处理进程间通讯;
· QTcpSocket:TCP协议网络数据传输;
· QUdpSocket:传输 UDP 报文;
· QSslSocket:使用 SSL/TLS 传输数据;
· QFileDevice:新增加的类,提供了有关文件 *** 作的通用实现。
3、这其中,QProcess、QTcpSocket、QUdpSoctet和QSslSocket是顺序访问设备。所谓“顺序访问”,是指它们的数据只能访问一遍:从头走到尾,从第一个字节开始访问,直到最后一个字节,中途不能返回去读取上一个字节;QFile、QTemporaryFile和QBuffer是随机访问设备,可以访问任意位置任意次数,还可以使用QIODevice::seek()函数来重新定位文件访问位置指针。
4、QFile主要提供了有关文件的各种 *** 作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice提供的read()、readLine()、readAll()以及write()这样的函数。值得注意的是,有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取,而不是自己分析文件路径字符串。
5、举个例子,打开文件时,需要参数指定打开文件的模式:
Constant Value Description
QIODevice::NotOpen 0x0000 The device is not open
QIODevice::ReadOnly 0x0001 The device is open for reading
QIODevice::WriteOnly 0x0002 The device is open for writing
QIODevice::ReadWrite ReadOnly | WriteOnly The device is open for reading and writing
QIODevice::Append 0x0004 The device is opened in append mode, so that all data is written to the end of the file
QIODevice::Truncate 0x0008 If possible, the device is truncated before it is opened All earlier contents of the device are lost
QIODevice::Text 0x0010 When reading, the end-of-line terminators are translated to '\n' When writing, the end-of-line terminators are translated to the local encoding, for example '\r\n' for Win32QIODevice::Unbuffered 0x0020 Any buffer in the device is bypassed
这种东西,Google下大把吧,正好前阵子有一个TCP通讯的,借你参考下好了:
Server Side
package nio;
import javaioByteArrayOutputStream;
import javaioIOException;
import javanetInetSocketAddress;
import javanetServerSocket;
import javanioByteBuffer;
import javaniochannelsSelectionKey;
import javaniochannelsSelector;
import javaniochannelsServerSocketChannel;
import javaniochannelsSocketChannel;
import javatextDateFormat;
import javatextSimpleDateFormat;
import javautilDate;
public class EchoServer {
private static int SOCKET_NUM = 55555;
private static DateFormat dateFormatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
/
@param args
/
public static void main(String[] args) {
new EchoServer()start();
}
public void start() {
try {
Selector selector = bindServer(); // 绑定服务端口,并定义一个事件选择器对象记录套接字通道的事件
/ 通过此循环来遍例事件 /
while (true) {
log("Waiting events");
int n = selectorselect(); // 查询事件如果一个事件都没有,这里就会阻塞
log("Got events: " + n);
ByteBuffer echoBuffer = ByteBufferallocate(50); // 定义一个byte缓冲区来存储收发的数据
/ 循环遍例所有产生的事件 /
for (SelectionKey key : selectorselectedKeys()) {
SocketChannel sc;
selectorselectedKeys()remove(key); // 将本此事件从迭带器中删除
/ 如果产生的事件为接受客户端连接(当有客户端连接服务器的时候产生) /
if ((keyreadyOps() & SelectionKeyOP_ACCEPT) == SelectionKeyOP_ACCEPT) {
ServerSocketChannel subssc = (ServerSocketChannel) keychannel(); // 定义一个服务器socket通道
sc = subsscaccept(); // 将临时socket对象实例化为接收到的客户端的socket
scconfigureBlocking(false); // 将客户端的socket设置为异步
scregister(selector, SelectionKeyOP_READ); // 将客户端的socket的读取事件注册到事件选择器中
Systemoutprintln("Got new client:" + sc);
}
/ 如果产生的事件为读取数据(当已连接的客户端向服务器发送数据的时候产生) /
else if ((keyreadyOps() & SelectionKeyOP_READ) == SelectionKeyOP_READ) {
sc = (SocketChannel) keychannel(); // 临时socket对象实例化为产生本事件的socket
ByteArrayOutputStream bos = new ByteArrayOutputStream(); // 定义一个用于存储byte数据的流对象,存储全部信息
echoBufferclear(); // 先将客户端的数据清空
try {
// 循环读取所有客户端数据到byte缓冲区中,当有数据的时候read函数返回数据长度
// NIO会自动的将缓冲区一次容纳不下的自动分段
int readInt = 0; // 为读取到数据的长度
while ((readInt = scread(echoBuffer)) > 0) {
// 如果获得数据长度比缓冲区大小小的话
if (readInt < echoBuffercapacity()) {
byte[] readByte = new byte[readInt]; // 建立一个临时byte数组,将齐长度设为获取的数据的长度
// 循环向此临时数组中添加数据
for (int i = 0; i < readInt; i++) {
readByte[i] = echoBufferget(i);
}
boswrite(readByte); // 将此数据存入byte流中
}
// 否则就是获得数据长度等于缓冲区大小
else {
boswrite(echoBufferarray()); // 将读取到的数据写入到byte流对象中
}
}
// 当循环结束时byte流中已经存储了客户端发送的所有byte数据
log("Recive msg: " + new String(bostoByteArray()));
} catch (Exception e) {
eprintStackTrace(); // 当客户端在读取数据 *** 作执行之前断开连接会产生异常信息
keycancel(); // 将本socket的事件在选择器中删除
break;
}
writeBack(sc, bostoByteArray()); // 向客户端写入收到的数据
}
}
}
} catch (Exception e) {
eprintStackTrace();
}
}
/
绑定服务端口,初始化整个服务
@throws IOException
/
private Selector bindServer() throws IOException {
log("Start binding server socket:" + SOCKET_NUM);
Selector selector = Selectoropen(); // 定义一个事件选择器对象记录套接字通道的事件
ServerSocketChannel ssc = ServerSocketChannelopen(); // 定义一个异步服务器socket对象
sscconfigureBlocking(false);// 将此socket对象设置为异步
ServerSocket ss = sscsocket(); // 定义服务器socket对象-用来指定异步socket的监听端口等信息
InetSocketAddress address = new InetSocketAddress(SOCKET_NUM); // 定义存放监听端口的对象
ssbind(address); // 将服务器与这个端口绑定
sscregister(selector, SelectionKeyOP_ACCEPT); // 将异步的服务器socket对象的接受客户端连接事件注册到selector对象内
log("Binded socket at:" + SOCKET_NUM);
return selector;
}
private boolean writeBack(SocketChannel sc, byte[] b) {
ByteBuffer echoBuffer = ByteBufferallocate(blength); // 建立这个byte对象的ByteBuffer
echoBufferput(b); // 将数据存入
echoBufferflip(); // 将缓冲区复位以便于进行其他读写 *** 作
try {
// 向客户端写入数据,数据为接受到数据
scwrite(echoBuffer);
} catch (IOException e) {
eprintStackTrace();
return false;
}
Systemoutprintln("Msg echo back: " + new String(echoBufferarray()));
return true;
}
private static void log(Object msg) {
Systemoutprintln("SERVER [" + dateFormatterformat(new Date()) + "]: " + msg);
}
}
以上就是关于pythonsocket获取数据代码全部的内容,包括:pythonsocket获取数据代码、QTcpSocket发送接收数据时有大小限制吗、tcp socket连接后接收不到返回的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)