中秋了,首先祝大家中秋快乐,闲着无事在家整一个socket的聊天程序,有点仿QQ界面,就是瞎折腾,不知道最后是不是能将所有功能实现。

如果你对socket不了解,请看这篇文章:http://www.cnblogs.com/wolf-sun/p/3322300.html

可以让你快速对socket有个整体认识,如果你已经是socket网络编程高手,你可以忽略n个字,跳出本文章...

LZ想实现的功能有:

  1. 基本的聊天功能。
  2. 可以发送文件。
  3. 可以像qq那样发送震动。
  4. 可以截图,并发送。
  5. 可以在窗口中发送图片。
  6. 可以设置字体,字体颜色等功能。
  7. 最后也想实现视频语音等功能。

先将winform的客户端和服务端界面贴出来。山寨的我都不能忍了......

虽然不知道qq中具体实现是什么方式的,但是按自己现有水平一步步实现每个功能,那也是非常大的挑战,毕竟自己也是刚接触socket网络编程,也只能做一个查一个,逼自己多动手。

这里用的是多行TextBox控件,但是不能放图片,是个最大的问题。想考虑试试webbrower控件。

服务端代码:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Net;
 8 using System.Net.Sockets;
 9 using System.Text;
10 using System.Threading;
11 using System.Threading.Tasks;
12 using System.Windows.Forms;
13
14 namespace Wolfy.ChatServer
15 {
16     public partial class Server : Form
17     {
18         public Server()
19         {
20             InitializeComponent();
21             //不让其检查跨线程的操作
22             Control.CheckForIllegalCrossThreadCalls = false;
23         }
24
25         private void btnSend_Click(object sender, EventArgs e)
26         {
27
28         }
29
30         private void btnStartService_Click(object sender, EventArgs e)
31         {
32             //服务器ip地址
33             IPAddress ip = IPAddress.Parse(txtIPAddress.Text);
34             //ip地址和端口
35             IPEndPoint endpoint = new IPEndPoint(ip, int.Parse(txtPort.Text));
36             //创建用于监听的socket
37             Socket socketListener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
38             //绑定ip和端口
39             socketListener.Bind(endpoint);
40             //开始监听 限制连接数 最多可以连接10个
41             socketListener.Listen(10);
42             ShowMsg("开始监听......");
43             //创建线程 去监听连接
44             Thread th = new Thread(ListenConn);
45             //将线程变为后台线程
46             th.IsBackground = true;
47             th.Start(socketListener);
48         }
49         private void ListenConn(object o)
50         {
51             //将参数o 转化为监听的socket
52             Socket socketListener = o as Socket;
53             //写入循环 每一个连接就创建一个通信用的socket
54             while (true)
55             {
56                 //当有客户端连接成功 创建通信用的socket
57                 Socket connSocket = socketListener.Accept();
58                 ShowMsg(connSocket.RemoteEndPoint + " " + DateTime.Now.ToString() + " 连接成功");
59             }
60
61         }
62         /// <summary>
63         /// 提示信息辅助方法
64         /// </summary>
65         /// <param name="msg"></param>
66         private void ShowMsg(string msg)
67         {
68             this.txtMsgView.AppendText(msg + "\r\n");
69         }
70     }
71 }

首先测试服务端是否开始监听...运行命令 netstat -a -b

可见服务端已经处于监听状态。

测试客户端和服务端的连接,这里使用telnet命令格式:telnet 127.0.0.1 50000

从服务端结果可以看出多客户端连接是成功的,并且可以看到系统为客户端随机分配了两个端口:2511和2512

结语:

先写到这里,中秋了,也不能这样宅在家里啊,大家可以讨论一下,聊天信息窗口用什么控件比较好,可以支持文字输入又可以支持载入图片。

这种socket的聊天程序太多了,大家可能腻了,但是上篇文章简单学习了socket,我觉得还是动手操作一下比较好,毕竟,你知道和你动手做,是两码事!

happy,中秋节

转载于:https://www.cnblogs.com/wolf-sun/p/3329558.html

Socket网络编程(2)--服务端实现相关推荐

  1. Qt:Qt实现Winsock网络编程—TCP服务端和客户端通信(多线程)

    Qt实现Winsock网络编程-TCP服务端和客户端通信(多线程) 前言 感觉Winsock网络编程的api其实和Linux下网络编程的api非常像,其实和其他编程语言的网络编程都差不太多.博主用Qt ...

  2. QT网络编程开发服务端

    下一篇: QT网络编程开发客户端 文章目录 基于Qt的网络编程服务端 QTcpServer 配置 listen() close() newConnection() SINGL readyRead() ...

  3. java网络编程Socket实现客户端向服务端发送信息

    (可按目录按需阅读,我一般会整理的比较细) 前置知识 java IO Socket 什么是socket?socket字面意思其实就是一个插口或者套接字,包含了源ip地址.源端口.目的ip地址和源端口. ...

  4. OSI七层、TCP/IP五层、UDP、TCP的socket编程(服务端及客户端)、字节序转换、多进程以及多线程服务端的实现

    1.网络以覆盖范围划分:局域网/城域网/广域网   互联网/因特网   以太网/令牌环网--组网方式 2.在网络中必须能够为一表示每一台主机,才能实现点到点的精确通信            IP地址: ...

  5. Linux C++/Java/Web/OC Socket网络编程

    一,Linux C++ Socket网络编程 1.什么是TCP/IP.UDP? TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制 ...

  6. python 之socket 网络编程

    socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. socket起源于Un ...

  7. Linux Kernel TCP/IP Stack — Socket Layer — TCP/UDP Socket 网络编程

    目录 文章目录 目录 TCP/UDP Socket 逻辑架构 创建 Socket 绑定 Socket 请求建立 Socket 连接 监听 Socket 接受请求 关闭连接 数据的发送和接收 send ...

  8. Socket网络编程笔记

    网络.计算机网络的构成是什么? 网络: 在计算机领域中,网络是信息传输.接收.共享的虚拟平台,通过它可以把各个点.面(组织之间).体(例如公共app)的信息联系到一起,从而实现这些资源的共享. 局域网 ...

  9. 在Java中使用Socket模拟客户端和服务端(多线程)

    1:Socket与ServerSocket的交互 2.Socket和ServerSocket介绍 Socket 构造函数 Socket() Socket(InetAddress address, in ...

最新文章

  1. AI时代我们最好做某领域的专家或高手
  2. Kubernetes 1.6新特性
  3. K8S报错:controller-manager Unhealthy Get http://127.0.0.1:10252/healthz: dial tcp 127.0.0.1:10252
  4. 最新 Spring 系列教程,都在这了
  5. IntelliJ IDEA 配置文件位置
  6. Js 获取 本周、本月起始时间
  7. php原生判断,JavaScript
  8. 为什么要有事件循环机制(Event Loop)
  9. 计算机数字音频制作工具
  10. java jsp中文乱码怎么解决_JSP中文乱码问题全解决方案
  11. java字体推荐_最适合编程的10大字体推荐
  12. php 邮件服务器 群发,发送使用PHP群发电子邮件发送使用PHP群发电子邮件(Sending mass email usin...
  13. Matlab:调试成功运行失败的解决方法(附加求助!)
  14. Tensorflow神经网络框架 小例子 三层神经网络 卷积神经网络 循环神经网络 神经网络可视化
  15. lstrcpyn和strncpy
  16. 把JavaScript单独写成文件,开头怎么写
  17. php 基于gbk和 Ascii把汉字转换为拼音
  18. Kali Linux渗透测试之端口扫描(一)——UDP、TCP、隐蔽端口扫描、全连接端口扫描
  19. 浅谈微信营销 百战百胜 欢迎体验
  20. BUUCTF(大帝的密码武器)

热门文章

  1. x86的cpu处理int类型并不是处理char高效多少
  2. 【译】五个ES6功能,让你编写代码更容易
  3. linux下C程序:运行单个实例
  4. 老李推荐:第5章5节《MonkeyRunner源码剖析》Monkey原理分析-启动运行: 获取系统服务引用 1...
  5. 日志统计中的PV UV IP
  6. POJ 2718 Smallest Difference 贪心构造
  7. 使用GZIPInputStream和GZIPOutputStream压缩、解压java对象
  8. 阿里云服务器上使用iptables设置安全策略
  9. 8.6 wait和waitpid函数-进程控制
  10. linux中wget命令