如何使用socket进行客户端和服务器端的通信
下载完成后,软件是一个单独的运行程序,可以直接打开软件。 3软件的界面很简单,在左侧有tcp和udp的客户端或服务端的快捷按钮,上方有【创建】【删除】【退出】等选项按钮。4我们先来建立TCP的测试服务端。点击【TCP Server】再点击【创建】。选择一个监听端口,这里我们使用6001作为服务端的监听端口。建立完成后,服务端会自动启动,软件会显示【启动监听】的状态。我们可以检测一下本机的6001端口是否已经打开。在DOS窗口中输入命令【netstat -a】,可以在列表中看到本机的6001端口的状态为listening的状态,表示本机的6001端口正处于监听的状态。在DOS窗口中输入命令【telnet 192.168.0.140 6001】来登录本地的6001端口。点击回车键,就可以成功登录6001端口。在测试软件中就可以看到状态是已连接的状态,同时也可以看到对方的ip就是本地ip。再来测试通信情况,在DOS窗口中输入a、b、c,在软件的接收窗口就可以看到收到的数据了。在软件的发送窗口中输入1234567890,点击发送后,在DOS窗口中就可以看到软件发送过来的数据了。测试完成后,在软件中点击【停止监听】,同时在DOS窗口中可以看到【失去了跟主机的连接】,表示测试连接已经断开。再来创建TCP的客户端,点击【TCP Client】再点击【创建】。会弹出【创建socket客户端】窗口,输入对方的ip和对方的端口,点击确认。 tcp的客户端已经建立好,如果对方的端口监听正常的话,点击【连接】就可以连接到对方的端口和对方进行测试通信了。

socket客户端如何连接服务器端
import java.net.*; import java.lang.*;import java.io.*;public class MySocketServer{public static void main(String args[]) //throws IOException{try{ServerSocket myServer = new ServerSocket(8018);System.out.println("正在监听端口:"+myServer.getLocalPort());Socket myClient = null;boolean flag = true;String InputMessage = null;int c;while(flag){myClient = myServer.accept();//接收客户端的信息,如果不是Stop就继续监听,加个if判断DataInputStream dataIn = new DataInputStream(myClient.getInputStream());//DataInputStream dataIn = new DataInputStream(new BufferedInputStream(myClient.getInputStream()));OutputStream dataOut = myClient.getOutputStream();while( (InputMessage = dataIn.readLine()) != null ){if( InputMessage.equals("stop")){flag = false;break;}else{System.out.println("从客户端接收到的信息是:"+InputMessage);//输入:读取至 末尾-1结束,遇到回车'n'结束:while((c=System.in.read())!= -1){dataOut.write((byte)c);if(c== 'n'){dataOut.flush();break;}}}}dataIn.close();dataOut.close();myClient.close();}myServer.close();}catch(Exception e){System.out.println(e.getMessage());}}}客户端:import java.io.*;import java.lang.*;import java.net.*;public class MySocketClient{public static void main(String args[]){try{Socket myClient = new Socket("192.168.1.25",8018);DataInputStream dataIn = new DataInputStream(myClient.getInputStream());OutputStream dataOut = myClient.getOutputStream();boolean flag = true;int c;String serverResponse = null ;while(flag){while( (c=System.in.read())!= -1 ){dataOut.write((byte)c);if(c=='n'){dataOut.flush();serverResponse = dataIn.readLine();System.out.println("服务器的返回信息是:"+serverResponse);}}}dataIn.close();dataOut.close();myClient.close();}catch(Exception e){System.out.println("Exception :"+e.getMessage());}} }

C# 使用Socket如何进行连接
自己的IP地址 如果是直接入网的话(无网关 不是学校公司这种局域网入网的) 就是你上百度贴吧匿名发帖的那个IP 其他方法也有 但是这个最直观 还有 SOCKET不是一个端口性质的东西 而是更像一个数据包这种样子的东西 这点很容易混淆比如说 如果是服务器监听客户端的话 :服务器不需要知道客户端的IP 只需要打开自己这边的一个端口(PORT) 然后建立一个SOCKET实例绑定到这个端口 然后就成功的监听了 运行后所有发送到这个端口的BYTE流都可以通过SOCKET.BEGINACCEPT方法来接收而客户端却不但要知道服务器的IP 还要知道服务器用来监听的那个端口(PORT) 这样就形成了一个服务器ENDPOINT(IP+PORT) 然后自己生成一个SOCKET实例 再连接那个服务器ENDPOINT 再通过这个SOCKET实例传输自己的BYTE流编IM还是很复杂的 尤其是线程和异步调用的问题 SOCKET只是第一步 和网页的那种伪IM完全不一样的还有什么问题的话可以HI我 不过我也是菜鸟 只能尽力而为了 另外,站长团上有产品团购,便宜有保证
利用C#进行Socket通信编程之一 http://blog.csdn.net/huangxinfeng/article/details/4959242利用C#进行Socket通信编程之二http://blog.csdn.net/huangxinfeng/article/details/4967629
1.利用Tcp协议编程 1)服务器端:a)建立TCP监听器TcpListener对象。TcpListener tl=new TcpListener(端口号);b)启动监听器tl.Start();c)用监听器获取连接进来的套接字(Socket)Socket s=myList.AcceptSocket();d)通过Socket的Receive方法获取客户端发送的数据byte [] result=new byte[1024];int k=s.Receive(result);e)通过Socket的Send方法向客户端发送数据byte[] st=System.Text.Encoding.Default.GetBytes(“text”);s.Send(st);f)在通讯结束后,需要释放资源结束监听s.Close();tl.Stop();2)客户端:a)建立TCP客户端TcpClient对象。TcpClient tcpclnt = new TcpClient();b)连接服务器tcpclnt.Connect(IP地址字符串,端口号);c)获得客户端网络传输 流Stream stm =tcpclnt.GetStream();d)通过Stream的Write方法向服务器端发送的数据e)通过Stream的Read方法读取服务器段发来的数据f)在通讯结束后,需要释放资源,结束和服务器的连接tcpclnt.Close();2.利用UDP协议编程a)建立UDP客户端UdpClient对象。UdpClient uc=new UdpClient(端口号);b)连接对方远程主机uc.Connect(IP地址,对方远程主机的端口号);c)通过uc的Receive方法获取远程主机发送来的数据IPEndPoint ip=new IPEndPoint(IPAddress.Parse(IP字符串),端口号);byte[] b=uc.Receive(ref ip);e)通过uc的Send方法向远程主机发送数据byte[] st=System.Text.Encoding.Default.GetBytes(“text”);uc.Send(st);f)在通讯结束后,需要释放资源 uc.Close();

服务器与服务器用socket是怎么通信的
//上传文件 Socket socket = new Socket("192.168.0.240", 7878);OutputStream outputStream = socket.getOutputStream();String head = "Content-Length=" + audioFile.length()+ ";filename=" + audioFile.getName()+ ";sourceid=rn";outputStream.write(head.getBytes());PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());String response = StreaTool.readLine(inStream);String[] items = response.split(";");String position = items[1].substring(items[1].indexOf("=") + 1);RandomAccessFile fileOutStream = new RandomAccessFile(audioFile, "r");fileOutStream.seek(Integer.valueOf(position));byte[] buffer = new byte[1024];int len = -1;while ((len = fileOutStream.read(buffer)) != -1){outputStream.write(buffer, 0, len);}fileOutStream.close();outputStream.close();socket.close();audioFile.delete(); } cat

如何利用socket进行HTTP访问
一、如何建立与服务器之间的连接 HTTP基本TCP,所以我们需要与服务器建立连接,然后才能发送数据。建立连接参考如下函数socket_open:/**打开Socket,返回socketId,-1表示失败*/int socket_open(int IP,int Port,int type){SOCKET socketId;struct sockaddr_in serv_addr;int status;socketId=socket(AF_INET,SOCK_STREAM,0);if((int)socketId<0){printf("[ERROR]Create a socket failed!/n");return -1;}memset(&serv_addr,0,sizeof(serv_addr));serv_addr.sin_family=AF_INET;serv_addr.sin_addr.s_addr = ntohl(IP);serv_addr.sin_port = htons((USHORT)Port);status=connect(socketId,(struct sockaddr*)&serv_addr,sizeof(serv_addr));if(status!=0){printf("[ERROR]Connecting failed!/n");closesocket(socketId);return -1;}return socketId;}调用方式如下:int socketId=socket_open(0xC0A80001,808,0); //0xC0A80001是192.168.0.1的十六进制写法。二、如何发送请求发送数据要根据HTTP协议的要求附加协议头:static const char* protocolHead="GEThttp://www.xxx.com/index.htmlHTTP/1.1/n""Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*/n""Accept-Language: zh-cn/n""User-Agent:iPanelBrowser/2.0/n""Host:www.xxx.com:80/n""Connection: close/n/n"这里使用GET来获取指定URL的指定文档。建立连接后使用send将这些数据发送出去:send(socketId, protocolHead,strlen(protocolHead),0);发送完成HTTP请求后就等待接收数据。三、如何接收数据这里采用select循环查询的方式来判断有无数据到来:struct timeval tm = {0,7};fd_set fds_r;int status;char recvBuf[4096]={‘/0’};FD_ZERO(&fds_r);FD_SET(socketId,&fds_r);status=select(socketId+ 1, &fds_r, 0, 0, &tm); //socketId在这里是最大的fdif(status > 0 && FD_ISSET(socketId, &fds_r)){printf("Socket is readable...fd=[%d]/n",socketId);recv(socketId,recvBuf,4096,0);} 这样数据包就保存到缓冲区中了。

本文由 在线网速测试 整理编辑,转载请注明出处。