socket

java网络编程

会有一股神秘感。 提交于 2020-01-24 16:00:36
Socket :套接字,用于java网络编程的接口和一种机制,用套接字中的相关函数来建立连接和完成通信,socket可以看成在两个程序进行通信连接中的一个端点。 将区分不同应用程勋进程的三个参数 1.通信的目的地IP地址 2.使用的传输层协议 3.使用的端口号 与一个socket绑定。 1.每一个socket用一个半相关描述:(协议,本地地址,本地端口) 2.“套接字”或者“插座”(socket)也是一种软件形式的抽象,用于表达两台机器之间一个连接的“终端”。针对一个特定的连接,每台机器上都有一个“套接字”,可以想象他们之间有一条虚拟的“线缆”。线缆的每一端都插入一个“套接字”或“插座”里。 3.套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。   应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需通过同一个TCP协议端口传输数据。为了区别不同的应用程序和连接,许多计算机操作系统为应用程序与TCP/IP协议提供了称为套接字(Socket)的接口。 4.区分不同应用程序进程间的网络通信和连接,主要有三个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号。Socket原意是“插座”。通过将这三个参数结合起来,与一个“插座”Socket绑定

[已解决] java.net.ConnectException: Connection refused: no further information

折月煮酒 提交于 2020-01-24 15:11:23
程序抛出这个异常的原因多数是因为在此[host:port]没有监听,那么该如何解决这个问题呢,如下 第一个要做的是看你的host和port是否写错了,如 [ 127.00.1:8080 ] 第二个要看你的server是否真正的运行起来了,比如server在启动过程某些组件加载异常,会导致服务启动不成功。 第三个有可能是防火墙的原因,关闭防火墙试试 第四个就是如果你是自己写的socket那么检查如下:    //使用不带有host的InterSocketAddress socket.bind(new InetSocketAddress(port)); //而不是使用它 socket.bind(new InetSocketAddress(host,port)); //当bind操作带有host时,只能通过指定host加端口访问,否则会抛出异常 java.net.ConnectException: Connection refused: no further information 文章来源: http://www.cnblogs.com/gifisan/p/5406922.html 来源: https://www.cnblogs.com/gifisan/p/5406922.html

Python全栈——C/S基础

别说谁变了你拦得住时间么 提交于 2020-01-24 15:00:09
TCP tpye = SOCK_STREAM server.py import socket # 不传参数,默认使用基于网络类型的套接字,协议:TCP server = socket . socket ( ) # 告诉别人server的地址和端口 # 端口的范围是0-65535,但是0-1023这些是默认端口不能使用 server . bind ( ( '192.168.1.107' , 18080 ) ) # 能同时接受的连接 server . listen ( ) # 接受客户端的连接,阻塞等待 conn , addr = server . accept ( ) while 1 : msg_r = conn . recv ( 1024 ) . decode ( 'utf-8' ) if msg_r == 'q' : break print ( msg_r ) msg_s = input ( '>>>' ) conn . send ( msg_s . encode ( 'utf-8' ) ) if msg_s == 'q' : break conn . close ( ) server . close ( ) client.py import socket client = socket . socket ( ) client . connect ( ( '192.168.1

网络编程

青春壹個敷衍的年華 提交于 2020-01-24 14:52:35
UDP协议 不管接收端是否存在都会执行发生操作,并且接收端不会做出响应,` public class Demo { public static void main ( String [ ] args ) throws IOException { //DatagramSocket封装了upd协议的相关方法 DatagramSocket ds = new DatagramSocket ( ) ; String s = "hello" ; InetAddress ip = InetAddress . getByName ( "127.0.0.1" ) ; //字节数组,长度,长度,ip,端口号 System . out . println ( ip ) ; DatagramPacket dp = new DatagramPacket ( s . getBytes ( ) , 0 , s . getBytes ( ) . length , ip , 8888 ) ; ds . send ( dp ) ; //发送要发的数据 ds . close ( ) ; } } public class Receive { public static void main ( String [ ] args ) throws IOException { //服务器没有指定ip默认本地主机,要指定端口号

APP同过ESP8266与51单片机通信

假如想象 提交于 2020-01-24 14:45:48
APP通过ESP8266与单片机通信 简述 本项目中是用ESP8266作为热点,工作在MODE2模式,手机作为station接入ESP8266的网络进行数据传输,同时,ESP8266与52单片机之间通过串口进行数据传输。 本项目中只需要APP向WIFI发送数据,所以在APP的程序中没有接收WIFI数据的程序。在文章最后,则是笔者在写代码的过程中遇到的一个问题,51单片机不能接收WIFI数据,但能向WIFI发送AT指令的问题。 手机端实现 建立连接线程 以下为APP与ESP8266建立连接的线程,建立连接时只要获取其对象即可。其中的IP和port为ESP8266的IP地址和端口号,IP一般默认为192.168.0.1,端口号默认为8080,端口号可以自己设置。 private class ConnectThred extends Thread{ private String ip; private int port; public ConnectThred(String ip,int port){ this.ip = ip; this.port = port; } public void run(){ //接收数据可用子线程也可直接在此线程操作 char[] buffer=new char[256];//定义数组接收输入流数据 String bufferString="";/

python模块

与世无争的帅哥 提交于 2020-01-24 04:57:35
一、模块(Module)定义   为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。 模块好处:   1、最大的好处是大大提升了代码的 可维护性 。   2、编写代码不必从零开始,当一个模块编写完毕,就可以被其他地方引用( 可重用 )   3、使用模块可以 避免函数名和变量名冲突     每个模块有独立的命名空间,相同名字函数、变量可分别存在不同模块     编写模块时,不必考虑名字与其他模块冲突 模块分类:   1、 内置标准模块(标准库) 执行help('modules')查看所有Python自带模块列表   2、 第三方开源模块 ,可通过pip install模块名 联网安装   3、 自定义模块 二、模块调用 模块导入方法   第一种:import module 把整个模块都导入 import os   第二种:from module import xx 是从什么导入什么 from os import rmdir,rename # 可以一次导入多个子模块   第三种:from module xx.xx import xx as rename from django.core import handler # 一层层进入

Python下socket通信

a 夏天 提交于 2020-01-24 04:10:52
Server端代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # Author: areful # a server example which send hello to client. import socket import threading import time def tcp_link(_sock, _addr): print('Accept new connection from %s:%s...' % _addr) _sock.send(bytes('Welcome!', encoding='utf-8')) while True: data = _sock.recv(1024) time.sleep(1) if data == 'exit' or not data: break _sock.send(bytes('Hello, %s!' % data, encoding='utf-8')) _sock.close() print('Connection from %s:%s closed.' % _addr) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('127.0.0.1', 9999)) s.listen(5) print(

模拟BS服务器代码实现

≡放荡痞女 提交于 2020-01-24 01:53:14
package com.learn.demo04.BSTCP; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /* 创建BS版本TCP服务器 */ public class TCPServerThread { public static void main(String[] args) throws IOException { //创建一个服务器ServerSocket,和系统要指定的端口号 ServerSocket server = new ServerSocket(8080); /* 浏览器解析服务器回写的html页面,页面中如果有图片,那么浏览器就会单独的开启一个线程,读取服务器的图片 我们就的让服务器一直处于监听状态,客户端请求一次,服务器就回写一次 */ while(true){ //使用accept方法获取到请求的客户端对象(浏览器) Socket socket = server.accept(); new Thread(new Runnable() { @Override public void run() { try { //使用Socket对象中的方法getInputStream,获取到网络字节输入流InputStream对象 InputStream is =

C++ 异步IO (一) 阻塞式HTTP客户端

风格不统一 提交于 2020-01-23 18:30:24
An IO call is synchronous if, when you call it, it does not return until the operation is completed, or until enough time has passed that your network stack gives up. 简单来说,IO的函数后面的代码不会被执行,除非IO函数已返回,或函数超时了。 /* For sockaddr_in */ #include <netinet/in.h> /* For socket functions */ #include <sys/socket.h> /* For gethostbyname */ #include <netdb.h> #include <unistd.h> #include <string.h> #include <stdio.h> int main(int c, char **v) { const char query[] = "GET / HTTP/1.0\r\n" "Host: www.baidu.com\r\n" "\r\n"; const char hostname[] = "www.baidu.com"; struct sockaddr_in sin; struct hostent *h; const

socket inet_pton

心已入冬 提交于 2020-01-23 18:29:27
inet_pton   Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换   而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。   inet_pton函数原型如下[将“点分十进制” -> “整数”]   #include <sys/types.h>   #include <sys/socket.h>   #include <arpa/inet.h>   int inet_pton(int af, const char *src, void *dst);   这个函数转换字符串到网络地址,第一个参数af是地址族,转换后存在dst中   inet_pton 是inet_addr的扩展,支持的多地址族有下列:   af = AF_INET   src为指向字符型的地址,即ASCII的地址的首地址(ddd.ddd.ddd.ddd格式的),函数将该地址   转换为in_addr的结构体,并复制在*dst中   af =AF_INET6   src为指向IPV6的地址,,函数将该地址   转换为in6_addr的结构体,并复制在*dst中   如果函数出错将返回一个负值,并将errno设置为EAFNOSUPPORT,如果参数af指定的地址族和src格式不对,函数将返回0。   inet