服务器端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms; namespace SOCKET网络编程
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void btnWatch_Click(object sender, EventArgs e)
{
//创建一个负责监听的Socket
Socket socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//创建IP地址和端口号对象
IPAddress ip = IPAddress.Any;//这句Any是获取自己当前本机的IP,
//IPAddress ip=IPAdress.Parse(txtIP.Text); 这句是获取textbox里面输入的地址
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));//这里是获取文本框里输入的端口号,创建了一个端口对象,需要传入ip跟端口号
//让负责监听的Socket绑定IP地址跟端口号
socketWatch.Bind(point);
ShowMsg("监听成功");
//设置监听队列
socketWatch.Listen(10);
Thread th = new Thread(listen);
th.IsBackground = true;
th.Start(socketWatch); }
void listen(object o)
{
Socket socketWatch = o as Socket;//as的用法就是如果可以的话,那就直接转换过去
while (true)
{
//负责监听的Socket 来接收客户端的连接 创建跟客户端通信的Socket
Socket socketSend = socketWatch.Accept();
//如果接收成功,把发送端的地址显示出来
ShowMsg(socketSend.RemoteEndPoint.ToString() + "连接成功");
//客户端连接成功后,服务器应该接收客户端发来的消息
//开启一个新线程,不停的接收客户端发来的信息
Thread th = new Thread(Recive);
th.IsBackground = true;
th.Start(socketSend); }
}
/// <summary>
/// 服务器端接收客户端发来的信息
/// </summary>
/// <param name="o"></param>
void Recive(object s)
{
Socket socketSend = s as Socket;
while (true)
{
//客户端连接成功后,服务器应该接收客户端发来的消息
byte[] buffer = new byte[1024 * 1024 * 5];
int r = socketSend.Receive(buffer); //实际接收到的字节数
if(r==0)
{
break;
}
string str = Encoding.UTF8.GetString(buffer, 0, r);//把接收到的字节转成字符串
ShowMsg(socketSend.RemoteEndPoint + ":" + str);
}
}
void ShowMsg(string str)
{
txtShow.AppendText(str + "\r\n");
} private void Form1_Load(object sender, EventArgs e)
{
Control.CheckForIllegalCrossThreadCalls = false;
}
}
}

客户端:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace 接收端
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Socket sok = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
private void btnWatch_Click(object sender, EventArgs e)
{ IPAddress ip = IPAddress.Parse(txtIP.Text);
IPEndPoint point = new IPEndPoint(ip, Convert.ToInt32(txtPort.Text));
sok.Connect(point);
ShowMsg("连接成功"); }
void ShowMsg(string str)
{
MessageBox.Show(str + "\r\n");
}
/// <summary>
/// 客户端给服务器发送消息
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
string str = txtSend.Text.Trim();
byte[] buffer = System.Text.Encoding.UTF8.GetBytes(str);
sok.Send(buffer); }
}
}

客户端发送信息给服务器以及服务器接收客户端发来的信息(socket)的更多相关文章

  1. C# 建立UDP服务器并接收客户端数据

    C# 建立UDP服务器并接收客户端数据 2015-02-11 17:20 1218人阅读 评论(0) 收藏 举报  分类: C#开发技术(22)  版权声明:本文为博主原创文章,未经博主允许不得转载. ...

  2. {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习

    要求: 实现多个客户端发送文件给一个服务器端 提示:多个人创建客户端发送文件,服务端循环接收socket,从socket中获取文件 说明:这里我们只要建立一个服务端就可以了,然后让多台电脑使用客户端给 ...

  3. httpurlconnection发送文件到服务端并接收

    httpurlconnection发送文件到服务端并接收 客户端 import java.io.DataInputStream; import java.io.File; import java.io ...

  4. 深入Redis客户端(redis客户端属性、redis缓冲区、关闭redis客户端)

    深入Redis客户端(redis客户端属性.redis缓冲区.关闭redis客户端) Redis 数据库采用 I/O 多路复用技术实现文件事件处理器,服务器采用单线程单进程的方式来处理多个客户端发送过 ...

  5. 【代码笔记】Java深入学习——实现客户端发送文件到服务器的文件传输

    Server.java package com.huaxin.lesson02; import java.io.FileOutputStream; import java.io.InputStream ...

  6. android下socket编程问题:服务器关闭时,客户端发送请求的异常处理

    我用socket分别创建了一个服务器和一个客户端. 当服务器程序运行时,客户端和服务器发送接收数据是OK的. 但是,如果服务器程序关闭以后,客户端仍然发送请求的话,会抛出一个IOException.但 ...

  7. java后台服务器向Nodejs客户端发送压缩包文件

    java代码: Map map=new HashMap(); try { //获取本地文件转换成字符换 File file = new File(apppath);//"D:/upload/ ...

  8. nodejs向远程服务器发送post请求----融云Web SDK/客户端获取token

    最近要用到一个叫融云的及时通讯的SDK,在获取token这个步骤的时候有点卡顿,以防以后碰到类似的问题,再此记录一下. 客户端通过融云 SDK 每次连接服务器时,都需要向服务器提供 Token,以便验 ...

  9. SSH服务器与Android通信(3)--Android客户端发送数据

    Android客户端向SSH服务器发送数据主要有三种情况:通过客户端删除数据.添加数据和修改数据. 1.删除数据 先看看jsp文件里面是怎样删除数据的: <td align="cent ...

  10. java socket 一个服务器对应多个客户端,可以互相发送消息

    直接上代码,这是网上找的demo,然后自己根据需求做了一定的修改.代码可以直接运行 服务器端: package socket; import java.io.BufferedReader; impor ...

随机推荐

  1. 网络监测工具之Zabbix的搭建与测试方法(三) ---Zabbix Agent

    安装客户端 在官方网站下载最新版本zabbix agent v6.2.6,然后默认安装,其中配置服务端的界面如下图: 其他一律默认即可. 启用发现功能 如上图所示,开启发现规则,默认搜索zabbix ...

  2. ESXI 7.0封装网卡驱动

    前段时间配置的All In One 主机,由于华擎H410M-ITX/AC主板的板载网卡为intel I219-V,在安装ESXI后网卡无法驱动.查询之后发现原来ESXI7.0.2的版本不含该网卡驱动 ...

  3. 【Linux】TCS34725 颜色传感器设备驱动

    一.概述 此笔记主要是学习 Linux 中的 I2C 驱动,顺便验证一下 TCS34725 传感器的使用,主要内容还是程序记录,方便编写其他 I2C 设备驱动时做参考,所以关于 TCS34725 这里 ...

  4. python进阶之路8 字典、元组、集合内置方法 编码理论

    内容回顾 作业讲解 1.前期不熟练的情况下一定要先写注释 2.一定要仔细思考每一行代码的含义 3.自己不会的代码或者不熟练的代码一定要多敲多练 数据类型内置方法简介 所有的数据类型基本上都自带了一些操 ...

  5. P3845 [TJOI2007]球赛

    简要题意 \(T\) 组数据,每一组数据给出 \(n\) 个数对 \((a,b)\).你需要将其分为几组,使得组单调不降.求最小组数. 思路 模拟赛考的题. 先来介绍 Dilworth 定理: 对于任 ...

  6. angular8表格文件上传并渲染到页面(上传文本与表格,表格有两种写法--之二)

    import { Component, OnInit , ViewChild, OnDestroy, AfterViewInit } from '@angular/core'; import { ST ...

  7. 打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime-settings:13:17

    问题:打开sublime text3 弹出错误提示 Error trying to parse settings: Expected value inPackages\UserJSONsublime- ...

  8. Python标准库pathlib及实例操作

    Python标准库pathlib及实例操作 https://docs.python.org/zh-cn/3.9/library/pathlib.html 官网 讲的比较好的文章 https://zhu ...

  9. Mybatis Plus整合PageHelper分页的实现示例

    1.依赖引入 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pag ...

  10. JavaScript: symbol 和 string key 取值用法

    '' 做 key 可以被 . 或者 [] 运算符取出 [""] 做 key 同样可以被 . 或者 [] 运算符取出 symbol 做 key 只能被 . 取出 [symbol] 做 ...