×

socket编程实例

包含socket编程实例的词条

admin admin 发表于2023-04-11 20:52:09 浏览73 评论0

抢沙发发表评论

本文目录一览:

用Socket编程实现一个基于C/S的应用

例子一:

1 客户端的程序

package net3;

import java.io.*;

import java.net.*;

public class Client {

public static void main(String[] args){

try{

System.out.println("连接到服务器");

Socket s=new Socket("localhost",4005);

BufferedReader b=new BufferedReader(new InputStreamReader(System.in));

BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));

PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));

String str="";

String sss="";

while(true)

{

str=b.readLine();

pw.println(str);

pw.flush();

//不理睬大小写转换

if(str.equalsIgnoreCase("stop"))

{

System.out.println("服务停止");

break;

}

sss=br.readLine();

System.out.println(sss);

if(sss.equalsIgnoreCase("stop"))

{

System.out.println("服务停止");

break;

}

}

b.close();

br.close();

pw.close();

}

catch(IOException e){}

}

}

2 服务器端的程序:

package net3;

import java.io.*;

import java.net.*;

public class Server {

public static void main(String[] args){

try{

System.out.println("服务器正在启动....");

ServerSocket ss=new ServerSocket(4005);

System.out.println("服务器启动,等待服务...");

Socket s=ss.accept();

BufferedReader r=new BufferedReader(new InputStreamReader(System.in));

BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));

PrintWriter bw=new PrintWriter(new OutputStreamWriter(s.getOutputStream()));

String str="";

String sss="";

while(true)

{

sss=br.readLine();

System.out.println(sss);

if(sss.equalsIgnoreCase("stop"))

{

System.out.println("服务停止");

break;

}

str=r.readLine();

bw.println(str);

bw.flush();

//不理睬大小写转换

if(str.equalsIgnoreCase("stop"))

{

System.out.println("服务停止");

break;

}

}

br.close();

r.close();

bw.close();

}

catch(IOException e){}

}

}

例子二:

package test.socket;

import java.io.BufferedReader;

import java.io.DataInputStream;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.PrintStream;

import java.net.ServerSocket;

import java.net.Socket;

import java.net.UnknownHostException;

public class TalkMe {

public static void main(String[] args) {

System.out.println("请输入:IP地址:");

TalkMe talk = new TalkMe();

talk.listener().start();

try {

talk.talker(new BufferedReader(new InputStreamReader(System.in)).readLine()).start();

} catch (IOException e) {

e.printStackTrace();

}

}

private Thread listener(){

return new Thread() {

public void run() {

DataInputStream dataIS = null;

String clientSay;

try {

ServerSocket server = new ServerSocket(9666);

Socket socket = server.accept();

while (true) {

dataIS = new DataInputStream(socket.getInputStream());

clientSay = dataIS.readLine();

System.out.println("Other say:" + clientSay);

}

} catch (IOException e) {

e.printStackTrace();

}

}

};

}

private Thread talker(final String ip){

return new Thread(){

public void run() {

Socket socket = null;

InputStreamReader stdin=new InputStreamReader(System.in);

BufferedReader br=new BufferedReader(stdin);

DataInputStream dataIS = new DataInputStream(System.in);

OutputStream os;

PrintStream ps;

String say = "";

boolean flag = true;

while (flag) {

if (flag)

System.out.println("connection ....");

try {

socket = new Socket(ip, 9666);

System.out.println("connection ok.");

flag = true;

os = socket.getOutputStream();

ps = new PrintStream(os);

while (true) {

say = dataIS.readLine();

ps.println(say);

}

} catch (UnknownHostException e) {

try {

sleep(1000);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

} catch (IOException e) {

}

}

}

};

}

}

python socket编程

通过python的网络通信支持,通过网络模块,python程序可以非常方便地相互访问互联网上的HTTP服务和FTP服务等。可以直接获取互联网上的远程资源,还可以向远程资源发送GET POST请求。

计算机网络是线代通信技术与计算机技术相结合的产物,计算机网络主要可以提供

通信协议一般由三部分组成:一是语义部分,用于决定双方对话类型;二是语法部分,用于决定双方对话的格式;三是变化规则,用于决定通信双方的应答关系。

应用层:与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。有HTTP, FTP , NFS, SMTP, TELNET

表示层:这一层主要是定义数据格式及加密。如加密, ASCII

会话层:它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的。如 RPC,SQL

传输层:这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在泳衣主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能,如 TCP UDP SPX

网络层:这层对端对端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。如IP

数据链路层:它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关

物理层:OSI的物理层规范是有关传输介质的特性,这些规范通常也参考了其他组织制定的标准。

IP地址用于唯一标识网络中的一个通信实体,这个通信实体既可以是一个主机,也可以是路由器的某个端口,。而在基于IP协议的网络中传输数据包都必须使用IP地址来进行标识。

端口,程序与外界进行交互的出入口。

Tcp/IP通信协议是一种可靠的网络协议,他在通信的两端建立一个socket,从而形成虚拟的网络链路。一旦建立了虚拟网络链路,两端的程序就可以通过该链路进行通信。

IP 是Internet上使用的一个关键协议,通过IP协议,使internet成为一个允许连接不同类型的计算机和不同操作系统的网络。同时还需要TCP协议来提供可靠且无差错的服务。

TCP协议被称为端对端协议,这是因为他在两台计算机的连接中起了非常重要的角色,当一台计算机需要与另外一台计算机连接时,TCP协议会让他们之间建立一个虚拟链路,用于发送和接受数据。

TCP协议负责收集这些数据包,并将其按照适当的顺序传送,接收端收到数据包后将其正确的还原。TCP保证数据包在传送过程中准确无误。TCP协议采用重发机制,当一个通信实体发送一个消息给另外一个通信实体后,需要接收到另外一个通信实体的确认信息,如果没有接收到该确认信息,则会重发信息。-socket编程实例

使用socket之前,必须先创建socket对象,可通过该类的构造器来创建socket实例。

socket.socket(family = AF_INET, type= SOCK_STREAM, proto=0, fileno= None)

socket对象常用的方法:

基本步骤

创建客户端的步骤:

小实例:服务端

客户端:

通过这样就可以实现socket之间的通信。

socket网络编程

客户端与服务端通过socket套字节连接后都会返回一个实例对象,分别保存这个对象,就相当于保存的对方的地址。不同的客户端连接到服务器,得到的对象都是不同的。服务端要发信息直接拿这个对象进行操作就可以了。-socket编程实例

很久没写了,具体名称记不起来了,思路就是这样的

关于vb.net中socket编程实例:服务器端的一些问题

Socket类连接后 可以通过类中的 RemoteEndPoint 来获取远程IP和端口信息.

要注意的是.需要将它强制转化为 IPEndPoint类型 然后通过 IPEndPoint.Address以及IPEndPoint.Port来获取对应的IP及端口

例:

Dim REV_SCK As New Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp)

'这里创建一个UDP Socket连接的实例 TCP也是一样的

'省略SOCKET连接的代码 当SOCKET连接成功后 可以用下面的语句获取远程信息

Dim IP as string ,Port as integer

'定义IP和Port变量 用来保存地址及端口

IP = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Address.ToString())

Port = IPAddress.Parse(CType(REV_SCK.RemoteEndPoint, IPEndPoint).Port)