当前位置:首页 » 编程软件 » csocket编程视频

csocket编程视频

发布时间: 2023-07-23 08:11:05

java中的socket编程是作什么的

Socket,又称为套接字,Socket是计算机网络派枝通信的基本的技术之一。如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的。本文仿羡慧会介绍一下基于TCP/IP的Socket编程,并且如何写一个客户端/服务器程序。
方法/步骤

Java中的socket编程 下面的部分将通过一些示例讲解一下如何使用socket编写客户端和服务器端的程序。 注意:在接下来的示例中,我将使用基于TCP/IP协议的socket编程,因为这个协议远远比UDP/IP使用的要广泛。并且所有的socket相关的类都位于java.net包备答下,所以在我们进行socket编程时需要引入这个包。

写入数据 接下来就是写入请求数据,我们从客户端的socket对象中得到OutputStream对象,然后写入数据后。很类似文件IO的处理代码。

打开服务器端的socket

读取数据 通过上面得到的socket对象获取InputStream对象,然后安装文件IO一样读取数据即可。这里我们将内容打印出来。

使用socket实现一个回声服务器,就是服务器会将客户端发送过来的数据传回给客户端。

② CSocket之UDP编程

#include <stdio.h>
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}

SOCKET sersocket=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN seraddr;
seraddr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
seraddr.sin_family=AF_INET;
seraddr.sin_port=htons(5000);

bind(sersocket,(SOCKADDR*)&seraddr,sizeof(SOCKADDR));

SOCKADDR clientaddr;
int len=sizeof(SOCKADDR);

char revbuf[100];
char sendbuf[100];

recvfrom(sersocket,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s\n",revbuf);
scanf("%s",&sendbuf);
sendto(sersocket,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);

closesocket(sersocket);
WSACleanup();
}

#include <stdio.h>
#include <Winsock2.h>
#pragma comment(lib,"ws2_32.lib")

void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD( 1, 1);

err = WSAStartup( wVersionRequested, &wsaData );
if ( err != 0 )
{
return;
}

if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 )
{
WSACleanup( );
return;
}

SOCKET sockclient=socket(AF_INET,SOCK_DGRAM,0);

SOCKADDR_IN clientaddr;
clientaddr.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
clientaddr.sin_family=AF_INET;
clientaddr.sin_port=htons(5000);

int len=sizeof(SOCKADDR);

char revbuf[100];
char sendbuf[100];
printf("请输入内容:\n");
while(1)
{

scanf("%s",&sendbuf);
sendto(sockclient,sendbuf,strlen(sendbuf)+1,0,(SOCKADDR*)&clientaddr,len);
recvfrom(sockclient,revbuf,100,0,(SOCKADDR*)&clientaddr,&len);
printf("%s\n",revbuf);

}
closesocket(sockclient);
WSACleanup();
}

大同小异,CSocket只是进行了封装而已,原理是一样的,编程要思路灵活才行。

③ C# SOCKET网络编程

1. 把 lisThd.ApartmentState = ApartmentState.STA; 注释掉,ApartmentState 已过时。2. 如果使用TCP协议,建议你使用 TcpListener 类和 TcpClient 类,更加方便。以下是一个示例以下示例说明如何设置 TcpClient 以连接到 TCP 端口 13 上的时间服务器。
using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeClient {
private const int portNum = 13;
private const string hostName = "host.contoso.com"; public static int Main(String[] args) {
try {
TcpClient client = new TcpClient(hostName, portNum); NetworkStream ns = client.GetStream();

byte[] bytes = new byte[1024];
int bytesRead = ns.Read(bytes, 0, bytes.Length); Console.WriteLine(Encoding.ASCII.GetString(bytes,0,bytesRead)); client.Close(); } catch (Exception e) {
Console.WriteLine(e.ToString());
} return 0;
}
}
TcpListener 用于监视 TCP 端口上的传入请求,然后创建一个 Socket 或 TcpClient 来管理与客户端的连接。Start 方法启用侦听,而 Stop 方法禁用端口上的侦听。AcceptTcpClient 方法接受传入的连接请求并创建 TcpClient 以处理请求,AcceptSocket 方法接受传入的连接请求并创建 Socket 以处理请求。以下示例说明如何使用 TcpListener 创建网络时间服务器以监视 TCP 端口 13。当接受传入的连接请求时,时间服务器用来自宿主服务器的当前日期和时间进行响应。using System;
using System.Net.Sockets;
using System.Text;public class TcpTimeServer { private const int portNum = 13; public static int Main(String[] args) {
bool done = false;

TcpListener listener = new TcpListener(portNum); listener.Start(); while (!done) {
Console.Write("Waiting for connection...");
TcpClient client = listener.AcceptTcpClient();

Console.WriteLine("Connection accepted.");
NetworkStream ns = client.GetStream(); byte[] byteTime = Encoding.ASCII.GetBytes(DateTime.Now.ToString()); try {
ns.Write(byteTime, 0, byteTime.Length);
ns.Close();
client.Close();
} catch (Exception e) {
Console.WriteLine(e.ToString());
}
} listener.Stop(); return 0;
}

}

④ c++csocket编程 5种模式

1. 构造CSocket对象,如以下的形式:

CSocket Serversocket;

2. 利用CSocket对象的Create()函数创建Windows Socket,Create()函数会调用Bind()函数将此Socket绑定到指定的地址上,其原型为:

BOOL Create (UINT nSocketPort = 0, int nSocketType = SOCK_STREAM, LPCTSTR lpszSocketAddress = NULL);

其中nSocketPort参数指定通信连接的端口号,端口号可以任意指定,但最好不要使用系统默认的一些端口号,例如21是FTP文件传输使用的端口号;

3. Socket创建完毕之后,在服务器端进行监听客户的连接请求,使用如下的代码:

ServerSocket.Listen();

紧接着对于客户端而言,将会调用Connect()函数向服务器发送连接请求,而对于服务器而言,则会调用Accept()函数对客户端发送过来的请求连接进行接受和处理,Accept()函数可以创建一个和监听Socket相同的连接Socket来处理客户的请求,二原来的Socket仍然处于监听状态,使用的形式如下。

客户端:

ClientSocket.Connect(服务器的地址,服务器的端口号);

服务器端:

CSocket ReceiveSocket;

ServerSocket.Accept(连接Socket,客户的地址结构,客户地址结构的长度)

4. 对于数据流服务器类型而言,服务器和客户各自通过调用函数来完成数据的发送和接受,使用如下的语句:

ServerReceive.Receive(缓冲区,缓冲区的长度,接受标志位);

Client.Send(缓冲区,缓冲区的长度,发送标志位);

5. 在客户端与服务器端的数据传输完成之后,调用下述语句,释放Socket所占有的资源。

ServerSocket.Close();

ReceiveSocket.Close();

ClientSocket.Close();

⑤ 在windows下用C语言如何实现socket网络编程,需要用到哪些头文件或者库

需要用到的头文件包含:

#include <winsock2.h>

#include <windows.h>

与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库

Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:

Winsock 1:

Windows CE平台支持。

头文件:WinSock.h

库:wsock32.lib

Winsock 2:

部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;

头文件:WinSock2.h

库:ws2_32.lib

mswsock.h用于编程扩展,使用时必须链接mswsock.dll

(5)csocket编程视频扩展阅读

winsock库的加载与卸载:

加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

加载成功,返回值为0。

WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~

LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。

卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。

⑥ 怎样用C语言做socket网络编程

mfc只是对socket进行了一些封装,大部分人做网络编程都是用的原始的socket,比如如下接口都可以在c下进行调用x0dx0a 1.socket() x0dx0a 2.bind() x0dx0a 3.connect() x0dx0a 4.listen() x0dx0a 5.accept() x0dx0a 6.send() 和recv() x0dx0a 7.sendto() 和recvfrom() x0dx0a 8.close() 和shutdown() x0dx0a 9.getpeername() x0dx0a 10.gethostname() x0dx0a这些接口是在Winsock2.h中定义的不是在mfc中定义的,你只需要包含Winsock2.h头文件和Ws2_32.lib库就可以了。

热点内容
开源库编译管理员 发布:2025-02-06 09:39:14 浏览:914
脸书怎么注册安卓 发布:2025-02-06 09:36:47 浏览:380
车用安卓导航无线打不开什么原因 发布:2025-02-06 09:27:50 浏览:789
安卓与苹果如何互相传送文件 发布:2025-02-06 09:27:40 浏览:25
华为服务器盘符如何分配 发布:2025-02-06 09:26:41 浏览:559
传奇h5源码下载 发布:2025-02-06 09:26:06 浏览:77
编译uclibc 发布:2025-02-06 09:09:04 浏览:152
用gcc编译16位汇编 发布:2025-02-06 09:06:07 浏览:822
什么低端安卓手机不卡 发布:2025-02-06 09:03:32 浏览:13
我的世界服务器卡领地 发布:2025-02-06 08:50:45 浏览:255