C# Tcp和Socket 网络(五)
TcpReceive
public Form1()
{
InitializeComponent();
new Thread(() =>
{
IPAddress ip = IPAddress.Parse(ip地址);
Int32 port = ;
TcpListener listen = new TcpListener(ip, port);
listen.Start();
TcpClient tc = listen.AcceptTcpClient(); NetworkStream ns = tc.GetStream();
StreamReader sr = new StreamReader(ns);
string result = sr.ReadToEnd(); Invoke(new MethodInvoker(delegate() { textBox1.Text = result; }));
sr.Close();
ns.Close();
tc .Close();
listen.Stop(); }).Start();
}
TcpSend
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
TcpClient client = new TcpClient(ip地址, Int32.Parse(端口号));
NetworkStream ns = client.GetStream();
FileStream fs = File.Open("Form1.cs", FileMode.Open);
int data = fs.ReadByte();
while(data!=-)
{
ns.WriteByte((byte)data);
data = fs.ReadByte();
}
fs.Close();
ns.Close();
client.Close();
}
}
Socket Client
static void Main(string[] args)
{ IPHostEntry ipHsot = Dns.Resolve(ip地址);
IPAddress ipAddress = ipHsot.AddressList[];
IPEndPoint ipEndPoint = new IPEndPoint(ipAddress, );
Console.WriteLine("Starting : Creating Socket object");
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
s.Connect(ipEndPoint);
Console.WriteLine("Successfully Connected to {0}", s.RemoteEndPoint);
while (true)
{
byte[] receivedBytes = new byte[];
string sendMessage = Console.ReadLine();
if (sendMessage.Contains("exit"))
break;
Console.WriteLine("Creating message : {0}", sendMessage);
byte[] forwardMessage = new UTF8Encoding().GetBytes(sendMessage + "[FINAL]"); if (s.Connected)
{
try
{
s.Send(forwardMessage);
int totalBytesReceived = s.Receive(receivedBytes);
Console.WriteLine("Message provided from server :{0}", new UTF8Encoding().GetString(receivedBytes, , totalBytesReceived));
}
catch (Exception ex)
{
throw ex;
}
}
}
s.Shutdown(SocketShutdown.Both);
s.Close(); }
Socket Server
static void Main(string[] args)
{
Console.WriteLine("Starting : Createing Socket object");
Socket lisner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
lisner.Bind(new IPEndPoint(IPAddress.Any, ));
lisner.Listen();
Console.WriteLine("Waiting for connection on port 13745");
Socket socket = lisner.Accept();
while (true)
{
string receivedValue = string.Empty;
while (true)
{
byte[] receivedBytes = new byte[];
int numBytes = socket.Receive(receivedBytes);
Console.WriteLine("Receiving / ");
receivedValue += new UTF8Encoding().GetString(receivedBytes, , numBytes);
if (receivedValue.IndexOf("[FINAL]") > -)
break;
}
Console.WriteLine("Received value: {0}", receivedValue); string replyValue = Console.ReadLine();
byte[] replyMessage = new UTF8Encoding().GetBytes(replyValue);
socket.Send(replyMessage);
// socket.Shutdown(SocketShutdown.Both);
//socket.Close();
} }
}
C# Tcp和Socket 网络(五)的更多相关文章
- Java Web 基础(一) 基于TCP的Socket网络编程
一.Socket简单介绍 Socket通信作为Java网络通讯的基础内容,集中了异常.I/O流模式等众多知识点.学习Socket通信,既能够了解真正的网络通讯原理,也能够增强对I/O流模式的理解. 1 ...
- Socket网络编程详解
一,socket的起源 socket一词的起源 在组网领域的首次使用是在1970年2月12日发布的文献IETF RFC33中发现的, 撰写者为Stephen Carr.Steve Crocker和Vi ...
- Socket网络编程基本介绍
一,socket的起源 socket一词的起源 在组网领域的首次使用是在1970年2月12日发布的文献IETF RFC33中发现的, 撰写者为Stephen Carr.Steve Crocker和Vi ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- Python进阶(1)_Socket网络编程(基于tcp的socket)
网络协议参考:http://www.cnblogs.com/hedeyong/p/6889774.html 一.TCP/IP五层模型 学习socket一定要先学习互联网协议: 1.首先:本节课程的目标 ...
- Socket网络编程TCP、UDP演示样例
Socket网络编程: 1) OSI(了解): 国际标准化组织ISO(International Orgnization for Standardization)指定了网络通信的模型:开放系统互联(O ...
- Socket网络编程(TCP/IP/端口/类)和实例
Socket网络编程(TCP/IP/端口/类)和实例 原文:C# Socket网络编程精华篇 转自:微冷的雨 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次 ...
- python 网络编程 TCP/IP socket UDP
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- Day09: socket网络编程-OSI七层协议,tcp/udp套接字,tcp粘包问题,socketserver
今日内容:socket网络编程 1.OSI七层协议 2.基于tcp协议的套接字通信 3.模拟ssh远程执行命令 4.tcp的粘包问题及解决方案 5.基于udp协议的套接字 ...
随机推荐
- Shortest Unsorted Continuous Subarray
Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...
- 【转帖】PostgreSQL之 使用扩展Extension
PostgreSQL之 使用扩展Extension https://www.cnblogs.com/lnlvinso/p/11042677.html 挺好的文章.自己之前没有系统学习过 扩展.. 目前 ...
- SpringBoot起步
1.SpringBoot依赖包导入 方式一:将spring-boot的依赖为父pom出现 <parent> <groupId>org.springframework.boot& ...
- Oracle 查询id相同多个数据取一条
涉及场景 需要查出同一ID下 COLUMN_A字段为数值型的 多条数据 只去COLUMN_A为最小值的那条 SELECT * FROM (SELECT A.ID, A.COLUMN_A, ROW_NU ...
- hdu 6319 逆序建单调队列
题目传送门//res tp hdu 维护递增单调队列 根据数据范围推测应为O(n)的. 我们需要维护一个区间的信息,区间内信息是"有序"的,同时需要在O(1)的时间进行相邻区间的信 ...
- Thinking In Java 4th Chap2 一切都是对象
对基本数据类型的初始化有二: 1.String s="asdf"; 2.String s=new String("asdf"); 可能的存储区域: 寄存器(不可 ...
- LC 94. Binary Tree Inorder Traversal
问题描述 Given a binary tree, return the inorder traversal of its nodes' values. (左 - 根 - 右) Example: In ...
- 第六章 ZYNQ-MIZ701 GPIO使用之MIO
6.0 本章难度系数★★☆☆☆☆☆ 6.1 GPIO简介 Zynq7000系列芯片有54个MIO(multiuse I/O),它们分配在 GPIO 的Bank0 和Bank1隶属于PS部分,这些I ...
- F12的用法
F12在Web测试中十分重要,可以定位元素(UI自动化常用),查看网页响应时间/数据(定位BUG,测单页面响应时间→性能) Elements 点击这个按钮,将光标移至“Google”图片位置并点击,右 ...
- POJ 1860 汇率 SPFA
题意 有多种汇币,汇币之间可以交换,这需要手续费,当你用100A币交换B币时,A到B的汇率是29.75,手续费是0.39,那么你可以得到(100 - 0.39) * 29.75 = 2963.3975 ...