-
java socket 实现ftp服务器 list命令 返回数据格式
2014-05-02 14:07:43dsocket = new Socket(remoteHost,remotePort,InetAddress.getLocalHost(),20); PrintWriter dout = new PrintWriter(dsocket.getOutputStream(),true); if(param.equals("") || param.equals("LIST")) ... -
利用Socket搭建简单的Http服务器
2011-04-15 17:27:00一直不理解Http协议,觉得很抽象很神秘,看 《how tomcat work》时看到搭建了一个简单的http服务器,发现协议其实就是对消息格式的规范,就是大家都按这个规范约定的格式发消息收消息。1.建立sockerserver服务...一直不理解Http协议,觉得很抽象很神秘,看 《how tomcat work》时看到搭建了一个简单的http服务器,发现协议其实就是对消息格式的规范,就是大家都按这个规范约定的格式发消息收消息。
1.建立sockerserver服务
2.监听相应端口
3.对监听到的字节进行解析
Request 实际上就是解析HTTP协议并得到资源的请求路径uri。
4.对请求进行响应
这里实际上根据request分析的uri进行资源的字节化,输出到socket的out
可以看到其实就是简单的将资源用字节流输出。
最后提供完整的代码包(http://download.csdn.net/source/3194644),运行HttpServer.java 后可以通过浏览器访问:http://localhost:8088/index.htm 可以看到静态页面,通过后台可以看到请求的Http信息。
-
socket服务器针对客户端ip变更的处理办法
2012-02-12 18:48:12现在碰到了一个棘手的服务器问题,描述如下:服务器采用netty的tcp协议作为client-server的通讯方式,tcp的好处是与客户端的连接为长连接,消息格式精简,传递比较快速,而且服务器可以发送push消息。但现在的问题是...现在碰到了一个棘手的服务器问题,描述如下:服务器采用netty的tcp协议作为client-server的通讯方式,tcp的好处是与客户端的连接为长连接,消息格式精简,传递比较快速,而且服务器可以发送push消息。但现在的问题是,公司的网络出口ip经常会变更,而tcp是根据ip+port来判断客户端连接的,因此随着ip的变化,该连接肯定失效了。游戏会发生让玩家重新登陆的情况,这样的话,玩家是无法接受的,相当于无缘无故被踢出了游戏。
但是不少公司都是仅有几个出口ip,说明这种情况还是比较多见的,而且像qq等软件,用了tcp或者udp协议,也可以很好的适应这种环境,因此肯定有合适的解决方案。现在想到的一种办法是,每个tcp请求,都带有session信息,可以用一个64位的标志id的字节来存储,这样对协议增加的网络流量是微乎其微的,服务器需要对每个请求sessionId进行处理,判断是否有效,如果有效的话可以直接跟服务器通讯,无效的话需要重新登陆,获取新的sessionId。
另外一个重要问题是,客户端的tcp连接是无法估计保障的,可能玩家会突然关闭浏览器,而不会给服务器发送close信息。如果服务器对每个客户端的连接建立一个对象的话,需要管理这个对象的生命周期,设置一个失效时间,例如30分钟,如果30分钟没有操作的话,就自动销毁,这样可以防止对象累计越来越多产生内存泄露的情况。
-
Python socket实现客户端和服务器端传输图片
2020-06-19 17:47:40服务器端代码如下,当客户端连上服务器,服务器首先把图片数据的尺寸传输过去,然后再传输图片。 # server import socket # 导入 socket 模块 import base64 s = socket.socket() # 创建 socket 对象 host = ...使用python在网络上传送图片数据,需要以byte格式读取图片,这样才可以通过socket传输。
当客户端连上服务器,服务器首先把图片数据的尺寸传输过去,然后再传输图片。
服务器端代码
# server import socket # 导入 socket 模块 s = socket.socket() # 创建 socket 对象 host = socket.gethostname() # 获取本地主机名 port = 12345 # 设置端口 s.bind((host, port)) # 绑定端口 pic_path = r'd:\Pictures\7.JPG' with open(pic_path, 'rb') as f: data = f.read() s.listen(5) # 等待客户端连接 while True: conn, addr = s.accept() # 建立客户端连接 print('连接地址:', addr) conn.send(str(len(data)).encode('utf-8')) conn.send(data) conn.close() # 关闭连接
客户端连接到服务器端后,会首先接收图片数据大小以方便处理,然后接收图片数据,写到路径下。
客户端代码
import socket # 导入 socket 模块 s = socket.socket() # 创建 socket 对象 host = socket.gethostname() port = 12345 # 设置端口号 s.connect((host, port)) r = s.recv(1024) print(r) data_len = eval(r) data = s.recv(data_len) s.close() with open(r'C:\Users\Desktop\1.png', 'ba') as f: f.write(data) f.close()
参考:https://www.runoob.com/python/python-socket.html
-
Socket编程(实现了对客户端和服务器交互)
2009-04-10 09:08:12socket://<hostport>,前缀”socket://”必须指定,hostport是以host:port格式出现的服务器地址和连接端口字符串,服务器地址可以是主机名,也可以是IP地址,端口号是Socket服务器进行监听的端口号 -
python socket模块_python的socket模块
2020-12-03 20:18:37address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。sk.listen(backlog)开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。backlog等于5,表示内核已经接到了连接...sk.bind(address)
s.bind(address) 将套接字绑定到地址。address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。
sk.listen(backlog)
开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。
backlog等于5,表示内核已经接到了连接请求,但服务器还没有调用accept进行处理的连接个数最大为5
这个值不能无限大,因为要在内核中维护连接队列
sk.setblocking(bool)
是否阻塞(默认True),如果设置False,那么accept和recv时一旦无数据,则报错。
sk.accept()
接受连接并返回(conn,address),其中conn是新的套接字对象,可以用来接收和发送数据。address是连接客户端的地址。
接收TCP 客户的连接(阻塞式)等待连接的到来
sk.connect(address)
连接到address处的套接字。一般,address的格式为元组(hostname,port),如果连接出错,返回socket.error错误。
sk.connect_ex(address)
同上,只不过会有返回值,连接成功时返回 0 ,连接失败时候返回编码,例如:10061
sk.close()
关闭套接字
sk.recv(bufsize[,flag])
接受套接字的数据。数据以字符串形式返回,bufsize指定最多可以接收的数量。flag提供有关消息的其他信息,通常可以忽略。
sk.recvfrom(bufsize[.flag])
与recv()类似,但返回值是(data,address)。其中data是包含接收数据的字符串,address是发送数据的套接字地址。
sk.send(string[,flag])
将string中的数据发送到连接的套接字。返回值是要发送的字节数量,该数量可能小于string的字节大小。即:可能未将指定内容全部发送。
sk.sendall(string[,flag])
将string中的数据发送到连接的套接字,但在返回之前会尝试发送所有数据。成功返回None,失败则抛出异常。
内部通过递归调用send,将所有内容发送出去。
sk.sendto(string[,flag],address)
将数据发送到套接字,address是形式为(ipaddr,port)的元组,指定远程地址。返回值是发送的字节数。该函数主要用于UDP协议。
sk.settimeout(timeout)
设置套接字操作的超时期,timeout是一个浮点数,单位是秒。值为None表示没有超时期。一般,超时期应该在刚创建套接字时设置,因为它们可能用于连接的操作(如 client 连接最多等待5s )
sk.getpeername()
返回连接套接字的远程地址。返回值通常是元组(ipaddr,port)。
sk.getsockname()
返回套接字自己的地址。通常是一个元组(ipaddr,port)
sk.fileno()
套接字的文件描述符
-
python的socket模块
2019-09-28 14:17:48address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。 sk.listen(backlog) 开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。 backlog等于5,表示内核已经... -
node --- > 创建一个Socket客户端连接到服务器
2019-09-19 16:51:44描述: ...net.connect({ port: 60300 }) 访问服务器 服务器: ...每当监听的文件改变了,将信息通过json的格式传递给连接到的客户端 connection.write // 01、net-watcher.js 'use strict' const fs... -
python3.6socket库_网络编程-Python的socket库
2021-02-09 15:42:19address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。sk.listen(backlog)开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。backlog等于5,表示内核已经接到了连接... -
socket 原理
2017-12-08 11:06:58socket使用创建socket类对象格式: Socket mysocket = new Socket(“machineName”,1234); 第一个参数是机器名,第二个参数是... Socket(InetAddress address,int port) //指明服务器的IP地址以及端口号 Socket -
tcl socket
2010-12-08 23:18:00port-server :表明开启的是服务器端port:端口command:当有客户端来连接的时候,执行这个过程,这个过程有三个参数channel:给新客户端的通道address:提供给客户端连接的 ip 地址port:端口 2.客户端连接... -
java和c使用socket通信时,发送报文的问题
2019-12-23 16:22:54但是c语言写的服务端是很多年前的,目前已经无法对服务端作任何修改,c接收报文是用char定义的,报文是定长报文,不够的用空格补全,格式为包头+报文长度+报文内容(1字节+4字节+300字节),包头是6,报文长度是0300,... -
socket网络编程
2015-07-13 16:17:00INET 服务器之间网络通信 socket.SOCK_STREAM 流式socket,for TCP socket.DGRAM 数据报式socket,for UDP 格式: #使用给定的地址族、套接字类型、协议编号(默认为0)类创建 socket(family,type[.port]... -
Socket相关理解
2020-09-04 17:08:50Socket sk = new Socket(address,port); //2.连接上之后放到输出流中 OutputStream os = sk.getOutputStream(); // 3.将对象的格式表示打印到文本输出流 PrintWriter pw = new PrintWriter(os); //4.向服务器... -
基于C_S结构的Socket程序设计(含源码MFC和WIN32)
2012-06-02 19:12:29本程序中当client使用TCP socket连接TCP Server成功后,client端要向TCP Server发送“GET UDP PORT”命令字符串,Server收到后再向client回送自己的UDP Server 端口号(题目要求TCP Server建立连接后直接将UDP端口号... -
在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互...
2014-12-29 21:33:00Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库服务端: Java代码 publicclassSSLServer{ ... -
基于naga开发的TCP客户端/服务器程序
2013-04-13 16:50:16System.out.println("Client ip:" + nioSocket.getIp() +" port:"+nioSocket.getPort()+ " disconnected."); nioSocket.close(); isConnected = false; } public void connectionOpened(NIO... -
主题:在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互
2012-09-12 15:47:28Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库 服务端: public class SSLServer { private static ... -
python之socket
2016-01-18 01:16:00socket通常也叫做"套接字",应用程序通常通过"套接字"来向网络发出请求或者应答网络请求. socket模块是针对服务器...address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。 sk.listen... -
转载:在Android上实现SSL握手(客户端需要密钥和证书),实现服务器和客户端之间Socket交互...
2011-09-16 14:55:00Android的私钥和信任证书的格式必须是BKS格式的,通过配置本地JDK,让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库服务端: Java代码 publicclassSSLServer{ ... -
使用 acl 库开发简单的客户端与服务器程序
2014-05-18 23:25:00首先介绍 acl 中的服务器类:server_socket。该类定义了如下几个简单方法: /** * 开始监听给定服务端地址 * @param addr {const char*} 服务器监听地址,格式为: * ip:port;在 unix 环境下,还... -
python socket模块
2018-12-21 13:30:58address地址的格式取决于地址族。在AF_INET下,以元组(host,port)的形式表示地址。 sk.listen(backlog) 开始监听传入连接。backlog指定在拒绝连接之前,可以挂起的最大连接数量。 backlog等于5,表示内核... -
【网络编程】Linux自带socket库构建HTTP客户端发送数据(POST方式)
2020-04-08 12:34:20以上传图片到服务器为例子 ...(1) 创建socket对象(AF_INET, SOCK_...(2) 与服务器进行连接connect,需要知道服务器的IP和PORT,IP地址的格式(AF_INET),同时要把IP地址和PORT从主机字节序转换为网络字节序。 sock... -
C++Socket网络连接问题
2015-07-29 16:47:44//用于接受Windows Socket 的结构信息 int err; wVersionRequested = MAKEWORD(1,1); //请求1.1版本的windows 库 err = WSAStartup(wVersionRequested,&wsaData); if (err !=0) { log("I'm failed at first ... -
学习python(3)socket
2014-04-21 15:58:43#创建TCP服务器程序,把客户端发过来的字符串加上时间戳 格式:【时间】数据 from socket import * from time import ctime HOST = '' #为空,表示可以绑定所有有效的地址 PORT = 21567 # 随机生成未被占用的... -
PHP客户端和Golang服务器中的Apache Thrift错误
2018-12-03 07:46:05$socket = new THttpClient($host, $port, $uri); $this->transport = new TBufferedTransport($socket, 1024, 1024); $protocol = new TBinaryProtocol($this->transport); $this->... -
swf放到html里面后Socket通讯问题
2014-04-09 13:06:24port)运行之前,会向你的socket服务器的843端口(据说Adobe已经向相关管理机构申请保留843端口给Flash Player用)发送一个字符串 “”,这个时候如果你有一个服务在监听843端口那么收到这个字符串之后,直接按照... -
java socket 有问题,要求教
2009-08-11 04:24:14我要做一个从天气预报的网站取得数据的小程序,要求是用socket来做,那个服务器要求的格式是这样的: POST /globalweather.asmx/GetCitiesByCountry HTTP/1.1 Host: www.webservicex.net Content-Type: ... -
服务器设计散记
2016-07-07 13:06:11window/linux -> 网络IO模型(IOCP/epool) -> 网络协议TCP/UDP -> 消息包格式(包长|消息...关于服务器上port是监听用的,对指定端口进行监听,多个连接到来时系统为它们各自分配不同的socket句柄,服务器还是在