socket编程代码例子

网络编程Socket详解 在说socket之前。我们先了解下相关的网络知识; 端口 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。 例如:http 使用80端口 ftp使用21端口 smtp使用 25端口 端口用来标识计算机里的某个程序   1)公认端口:从0到1023   2)注册端口:从1024到49151   3)动态或私有端口:从49152到65535 Socket相关概.. 阅读详情

获得本机IP
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
/*
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
*/
//#pragma comment(lib,"WS2_32.lib")
char szHostname[100],szHostaddress[200];
if(gethostname(szHostname,info(szHostname))!=SOCKET_ERROR)
{
HOSTENT *pHostEnt=gethostbyname(szHostname);
if(pHostEnt!=NULL){
sprintf(szHostaddress,"%d.%d.%d.%d",
( pHostEnt->h_addr_list[0][0]&0x00ff ),
( pHostEnt->h_addr_list[0][1]&0x00ff ),
( pHostEnt->h_addr_list[0][2]&0x00ff ),
( pHostEnt->h_addr_list[0][3]&0x00ff ));
}
}
else
return;
CString %%1(szHostaddress);

4.端对端通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKET s;
char buf[1024];
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
s=socket(AF_INET,SOCK_DGRAM,0);
if(s==INVALID_SOCKET)
{
WSACleanup();
return -1;//创建套接字失败
}
SOCKADDR_IN servAddr;
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons(INADDR_ANY);;
if(bind(s,(SOCKADDR*)&servAddr,sizeof(SOCKADDR_IN))==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//绑定套接字失败
}
SOCKADDR_IN clientAddr;
int nClientlen=sizeof(clientAddr);
ZeroMemory(buf,sizeof(buf));
if(recvfrom(s,buf,size(buf),0,(SOCKADDR*)&clientAddr,nClientlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//接收数据失败
}
CString %%2(buf);
ZeroMemory(buf,sizeof(buf));
strcpy(buf,%%3);
servAddr.sin_family=AF_INET;
servAddr.sin_addr.s_addr=inet_addr(%%4);
servAddr.sin_port=htons((short)%%5);
int nServAddrlen=size(servAddr);
if(sendto(s,buf,sizeof(buf),0,(SOCKADDR*)&servAddr,nServAddrlen)==SOCKET_ERROR)
{
closesocket(s);
WSACleanup();
return -1;//向服务器发送数据失败
}
closesocket(s);
WSACleanup();

5.点对点通信
//#include <winsock2.h>
//#pragma comment(lib,"WS2_32.lib")
WSADATA wsd;
SOCKADDR_IN addrServ,addrServ2;
SOCKET sServer,sClient,sHost;
int retVal;
sockaddr_in addrClient;
char buf[1024];
static UINT port=%%2;
BOOL listenerRun=TRUE;
UINT Listen(LPVOID pParam)
{
addrServ.sin_family=AF_INET;
addrServ.sin_port=htons((UINT)pParam);
addrServ.sin_addr.s_addr=INADDR_ANY;
retVal=bind(sServer,(LPSOCKADDR)&addrServ,sizeof(SOCKADDR_IN));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//绑定套接字失败
}
retVal=listen(sServer,1);
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
WSACleanup();
return -1;//开始监听失败
}
int addrClientlen=sizeof(addrClient);
sClient=accept(sServer(sockaddr FAR*)&addrClient,&addClientlen);
if(INVALID_SOCKET==sClient)
{
closesocket(sServer);
WSACleanup();
return -1;//接收客户端请求失败
}
while(listenerRun)
{
ZeroMemory(buf,sizeof(buf));
retVal=recv(sClient,buf,sizeof(buf));
if(SOCKET_ERROR==retVal)
{
closesocket(sServer);
closesocket(sClient);
WSACleanup();
return -1;//接收客户端数据失败
}
CString %%4(buf);
}
}
if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
{
return -1;//失败
}
sServer=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sServer)
{
WSACleanup();
return -1;//创建套接字失败
}
CWinThread *pThread=AfxBeginThread(Listen,&port);
sHost=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(INVALID_SOCKET==sHost)
{
WSACleanup();
return -1;//创建套接字失败
}
servAddr2.sin_family=AF_INET;
servAddr2.sin_addr.s_addr=inet_addr(%%1);
servAddr.sin_port=htons((short)%%3);
int nServerAddrlen=sizeof(servAddr2);
retVal=connect(sHost,(LPSOCKADDR)&servAddr2,sizeof(servAddr2));
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//连接失败
}
zeroMemory(buf,sizeof(buf));
strcpy(buf,%%5);
retVal=send(sHost,buf,sizeof(buf),0);
if(SOCKET_ERROR==retVal)
{
closesocket(sHost);
WSACleanup();
return -1;//向发送数据失败
}
listenerRun=FALSE;
DWORD dwExitCode;
::GetExitCodeThread(pThread->m_hThread,&dwExitCode);
pThread=null;
closesocket(sServer);
closesocket(sClient);
closesocket(sHost);
WSACleanup(); 

python之socket编程 ocket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭) 阅读详情

相关推荐

Linux系统下的Socket编程详解

它基于套接字(Socket)的概念,通过创建和操作套接字,实现不同计算机之间的数据传输。这个例子只是Socket编程的入门示例,实际应用中可能涉及更多的功能和复杂性。通过理解Socket编程的原理和使用方法,可以在Linux系统下实现各种网络应用程序,如Web服务器、聊天程序等。本文将详细解析Linux系统下Socket编程的原理、使用方法以及相关的源代码示例。在Socket编程中,通信的两端分别是客户端和服务器端。客户端负责发送请求并接收服务器的响应,而服务器端则监听客户端的请求并提供相应的服务。

ByteJolt的博客 415

网络编程Socket代码实例

网络编程Socket代码实例 一、基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name meaning all available interfaces PORT = 50007 # Arbitrary non-pri...

473

socket案例

代码仅作为案例使用,如用在实际项目需要做相应改动,在前端页面中使用了简单的websocket作为接受来自服务器的消息测试,后端使用了sokect进行消息处理

socket编程代码示例

代码socket编程代码示例。

liaojunwu的博客 1545

socket代码实例

服务器端(ServiceServer):package cn.itcast.bigdata.socket;import java.net.InetSocketAddress;import java.net.ServerSocket;import java.net.Socket;public class ServiceServer { public static void main(String[]...

huangyinzhao的博客 420

网络通信Socket的简单案例

1.客户端代码2.服务端代码写法一3.服务端写法二3.写法比较。

代码是程序员的语言,博客是思想的桥梁,连接你我,共享智慧之光。 583

c语言socket编程代码例子

socket_client客户端代码 #include <sys/types.h> #include <sys/socket.h> #include <stdio.h> #include <string.h> #include <error.h> #include <netinet/in.h> int main() { //1.创建socket,socket()函数 int sockfd=0; sockfd = sock.

吃不饱、力不足的博客 2270

C语言socket编程实例

文章目录一、实验说明二、面向连接的流式套接字 C/S 例子三、非阻塞的多人聊天服务器例子四、参考书籍和???? 一、实验说明 服务端:树莓派(可以使用putty、xshell、vnc远程操作树莓派,这里使用vnc) 客户端:Ubuntu 所用语言:C语言 树莓派和Ubuntu应处于同一个局域网下(可以用手机热点连接) 二、面向连接的流式套接字 C/S 例子 在树莓派下,新建一个 Server1.c,命令 nano Server1.c,然后写入如下内容 #include <stdio.h&gt

xwmrcj的博客 707

linux咋socket编程,linux中socket编程

该楼层疑似违规已被系统折叠隐藏此楼查看此楼客户端:include #include #include #include #include #include #include #include #include #define SERVPORT 1234#define MAXDATASIZE 1000 /**/ int main(int argc, char *argv[]){int sockfd...

weixin_39531594的博客 119

java socket编程简单实例_一个简单的java socket编程例子

关于scoekt的一些介绍,请参加度娘上的内容,链接为:http://baike.baidu.com/view/13870.htm下面是自己写的一个socket的小例子,当前功能只是初步调试了下。服务端代码如下:import java.awt.AWTException;import java.awt.Robot;import java.io.BufferedInputStream;import j...

weixin_29608135的博客 651

VC之socket套接字编程

网络编程中,通常使用socket套接字编程,那么该如何使用呢?接下来我们做一个最基本的小程序实现其功能。 服务器端 // SocketTestService.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include #include #include #pra

冰点蓝欣的专栏 2647

Linux下Socket编程TCP Server端

Linux下Socket编程TCP Server端 2010年07月16日   一。建模   绝大部分关于socket编程的教程总是从socket的概念开始讲起的。要知道,socket的初衷是个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中的一小部分:运输层(Host-to-Host Transport Layer)的TCP和UDP协议,...

qix19qix 174

如何用C#下的Raw Socket编程实现网络封包监视

楼主thtx5(thtx25)2005-03-02 10:45:59 在 .NET技术 / C# 提问如何用C#下的Raw   Socket编程实现网络封包监视,请给出能用的源码,先谢谢各位了!!!!问题点数:100、回复次数:23Top1 楼thtx5(thtx25)回复于 2005-03-02 10:49:11 得分 0网上有代码但不能编译    

Zfrong繁荣的IT技术、IT项目、解决方案专栏Blog-上海 2835

linuxC系统编程——socket编程

例子: server端: #include #include//包含套接字函数库 #include #include//包含AF——INET相关结构 #include//包含AF——INET相关操作的函数 #include int main() { int server_sockfd,client_sockfd;//用于保存服务器和客户套接字标识符 int server_len,cli

371

Windows下C语言的Socket编程例子TCP和UDP)

Windows下C语言的Socket编程例子TCP和UDP) 一。   server端: 1 #include "stdafx.h" 2 #include 3 #include 4 5 #pragma comment(lib,"ws2_32.lib") 6 7 int main(int argc, char* argv[]) 8 { 9 //初始化

linuxheik的专栏 584

浅谈java中的Socket编程

Socket 通常我们也把它叫做"套接字",它是Java网络编程基础,几乎所有网络传输都是通过Socket来完成的;下面简单谈谈,对Socket 的认识以及一些基本的使用:1.认识Socket,ServerSocket认识一个类,我们首先会去查看它的API文档。Socket :是建立网络连接时使用。ServerSocket :用于服务器端。在JDK1.4中,java.net.Socket 类有 8

1077

socket python实例_Python Socket通讯例子详解

创新从模仿开始!python中内置的socket模块使得网络编程更加简单化,下面就通过两个小小脚本来了解客户端如何与服务器端建立socket。客户端代码:#clietn.pyif __name__ == '__main__': #判断是否调用自己本身,如果不是则__name__为脚本名称import socket #导入我们所需的socket模块sock = socket.socket(soc...

weixin_39970064的博客 207

转 利用Socket进行Java网络编程

Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。这里就介绍一下在Java中如何利用Socket进行网络编程。   在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键

1463
上一篇: C#异步通信概念及应用浅析
下一篇: C++ Socket编程的简单介绍
freesundark
博客等级 码龄16年 26粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值